2

我必须通过通用解析器解析几个包含标题的逗号分隔文件。标头数量众多,我需要提供选择少数几个重要标头的能力。

为每种文件类型实现我的通用解析器的具体解析器必须覆盖 onLine(IDictionary|string,string| line) 方法等。此行将标题值映射到行中的相应数据。

我的问题:我现在在我的 app.config 中使用逗号分隔的列表。问题是我的具体解析器将不得不使用实际的标头值作为键。我希望能够引入常量,以便在标题更改的情况下不需要重建。

目前我的 app.config 看起来像这样:

  <configSections>
    ...
    <section name="headers" type="System.Configuration.NameValueSectionHandler" />
    ...
  </configSections>
  ...
  <headers>
    ...
    <add key="file1" value="actualheader1,actualheader2,actualheader3" />
    <add key="file2" value="actualheader4,actualheader5,actualheader6" />
    <add key="file3" value="actualheader7,actualheader8,actualheader9" />
    ...
  </headers>
  ...

我需要类似的东西(在标签、键、值方面没有要求,只是试图显示我所追求的逻辑):

  <configSections>
    ...
    <section name="headers" type="?" />
    ...
  </configSections>
  ...
  <headers>
    ...
    <file1>
      <add key="headerconstant1" value="actualheader1" />
      <add key="headerconstant2" value="actualheader2" />
      <add key="headerconstant3" value="actualheader3" />
    </file1>
    <file2>
      <add key="headerconstant4" value="actualheader4" />
      <add key="headerconstant5" value="actualheader5" />
      <add key="headerconstant6" value="actualheader6" />
    </file2>
    <file3>
      <add key="headerconstant7" value="actualheader7" />
      <add key="headerconstant8" value="actualheader8" />
      <add key="headerconstant9" value="actualheader9" />
    </file3>
    ...
  </headers>
  ...

第二个选项将使实际标头值的更改能够在文件中找到而不会影响代码。

我怎样才能做到这一点 ?我有任何快速修复已经实施了吗?

4

1 回答 1

1

如果您想使用配置来完成此操作,但不希望在配置部分手动编码的学习曲线,请查看http://csd.codeplex.com/以获取 Visual Studio 插件。非常干净且易于理解。

于 2012-04-27T16:59:46.160 回答