我想有一个如下配置部分:
<mycollection>
<add name="myelement" type="class, assembly" var1="value" var2="value" />
<add name="myelement2" type="class2, assembly" var1="value" var3="value" var4="value" />
</mycollection>
这个想法是创建的实际ConfigurationElement
由类型值定义,并且每个元素都有自己的特定属性集。
另一种选择是所有元素都相同,但它们从不同的配置部分加载值,例如:
<mycollection>
<add name="myelement" configuration="myothersection" />
<add name="myelement2" configuration="myothersection2" />
</mycollection>
<myothersection type="class, assembly" var1="value" var2="value" />
这似乎更容易实现,但会导致更详细的配置文件。
第一个选择是否符合.NET配置模式,其次,这可能吗?
答案 0 :(得分:3)
您可以做的其他事情是覆盖OnDeserializeUnrecognizedElement。这样你就可以像这样创建一个ParametersConfigurationElement:
<parameters>
<string name="Patrick Huizinga" />
<string country="the Netherlands" />
<int currentScore="206" />
</parameters>
OnDeserializeUnrecognizedElement采用XmlReader,您可以查询自定义元素的属性。通过使用TypeConverter.ConvertFromInvariantString(您可以从TypeConverter获得TypeDescriptor.GetConverter),您甚至可以毫不费力地支持DateTime和Uri等类型。
答案 1 :(得分:2)
是的,这是可能的!查看此帖子了解详情:
这里有一个解决方案,允许您使用IConfigurationSectionHandler读取极其灵活的xml: http://alt.pluralsight.com/wiki/default.aspx/Craig/XmlSerializerSectionHandler.html