一节,C#中的许多实现

时间:2009-06-22 21:59:04

标签: c# architecture parsing configuration

我想下载一个文件,将其解析并放在某个地方。所以我在下面列出了几个部分,我想使用下面的指令来指导程序应该做什么。我喜欢这种形式的配置,我想弄清楚如何让它以某种方式工作,但我知道它不会完全像这样,因为我不能多次使用相同的部分。我只是希望有人可以就如何让这个想法发挥作用提出一些想法。

 <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
    <sectionGroup name="processor">
      <sectionGroup name="process">
        <!-- AVAILABLE TRANSPORTS -->
        <section name="ftp_transport" type="someFTPClass1, someAssembly"/>
        <section name="web_transport" type="someHTTPClass2, someAssembly"/>

        <!-- AVAILABLE PARSERS -->
        <section name="fixed_line_parser" type="someParserClass3, someAssembly" />
        <section name="regular_expression_parser" type="someParserClass4, someAssembly" />

        <!-- AVAILABLE LOADERS -->
        <section name="database_loader" type="someDbLoaderClass5, someAssembly" />
      </sectionGroup>
    </sectionGroup>
  </configSections>

然后这样的事情来推动该计划:

<processor>
   <process name="File1">
    <ftp_transport>...</ftp_transport>
    <fixed_line_parser>...</fixed_line_parser>
    <database_loader>...</database_loader>
   </process>

   <process name="File2">
    <web_transport>...</web_transport>
    <fixed_line_parser>...</fixed_line_parser>
    <database_loader>...</database_loader>
   </process>
</processing>

3 个答案:

答案 0 :(得分:1)

好像你基本上正在构建Inversion of Control (IoC) container。看一下.Net here

中的一些

答案 1 :(得分:0)

您是否将SectionGroup嵌套在SectionGroup中?将外部SectionGroup标记更改为SectionGroups而不是SectionGroup。

<!-- SECTION DECLARATION -->
 <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
    <sectionGroups name="processor">
      <sectionGroup name="process">
        <!-- AVAILABLE TRANSPORTS -->
        <section name="ftp_transport" type="someFTPClass1, someAssembly"/>
        <section name="web_transport" type="someHTTPClass2, someAssembly"/>

        <!-- AVAILABLE PARSERS -->
        <section name="fixed_line_parser" type="someParserClass3, someAssembly" />
        <section name="regular_expression_parser" type="someParserClass4, someAssembly" />

        <!-- AVAILABLE LOADERS -->
        <section name="database_loader" type="someDbLoaderClass5, someAssembly" />
      </sectionGroup>
    </sectionGroups>
  </configSections>

答案 2 :(得分:0)

我想做类似的事情。经过几个小时的搜索,我找到了这个例子:

http://www.dotneat.net/2007/10/16/StoringACollectionOnYourAppconfigUsingSectionHandlers.aspx

运作良好。