SavableModelBase<>加载/保存 - "清洁" XML或配置工具?

时间:2015-02-08 19:10:25

标签: c#-4.0 catel

我正在开发一个应该可以插拔的系统" - 用户应该能够指定在其中交互的各个部分("可组合的应用程序")。

作为应用程序的一部分,我有一个"处理器"的概念。应配置相关的配置类。

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.SomeType1OtherAsm.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;我可以使用的编辑器吗?

谢谢,

托默

1 个答案:

答案 0 :(得分:1)

Catel的xml有点臃肿的原因是因为它使用了DataContractSerializer。从我的头脑中,串行器中有一个优化选项,但不确定这是否值得。

你可以看到的另一个选择是Catel中的IConfigurationService,它最适合你,并且存储为键/值集合。