我正在开发一个应该可以插拔的系统" - 用户应该能够指定在其中交互的各个部分("可组合的应用程序")。
作为应用程序的一部分,我有一个"处理器"的概念。应配置相关的配置类。
e.g:
<processors>
<processor type="SomeAsm.SomeType1">
<configuration>
<SomeType1Prop1>value</SomeType1Prop1>
</configuration>
</processor>
<processor type="OtherAsm.SomeType2">
<configuration>
<SomeType2Prop1>value</SomeType2Prop1>
<SomeType2Prop2>value</SomeType2Prop2>
</configuration>
</processor>
</processors>
(当然SomeAsm.SomeType1
和OtherAsm.SomeType2
共享一些通用接口或基类)
我考虑使用System.Configuration
,但有一些缺点 - (1)我必须明确使用命名空间中的各种类(例如ConfigurationElement
,{{1等等)和(2)以支持&#34;任何&#34;配置类实例,我需要在反序列化时实现一些工厂。
另一种选择是Catel(非常棒)ConfigurationElementsCollection
类,它具有非常方便且易于使用的Save / Load方法。我用这种方法看到的唯一缺点是XML本身有点“冗长”。而且很难手动编辑。
有没有办法控制&#34;额外&#34;标记被省略到文件中(例如删除名称空间(SavableModelBase<>
然后xmlns:ctl2="http://schemas.datacontract.org/2004/07/InheritedConfiguration.CatelConfig"
)和graphid(ctl2:SomeType2Prop1
))?
或者,是否有一些&#34;全球&#34;我可以使用的编辑器吗?
谢谢,
托默
答案 0 :(得分:1)
Catel的xml有点臃肿的原因是因为它使用了DataContractSerializer。从我的头脑中,串行器中有一个优化选项,但不确定这是否值得。
你可以看到的另一个选择是Catel中的IConfigurationService,它最适合你,并且存储为键/值集合。