SavableModelBase<> Load/Save - "cleaner" XML 还是配置工具?
SavableModelBase<> Load/Save - "cleaner" XML or configuration tool?
我正在开发一个应该 "plug-able" 的系统 - 用户应该能够指定在其中交互的各个部分 ("composable application")。
作为应用程序的一部分,我有一个"processor"的概念,应该配置相关配置class。
例如:
<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
共享一些公共接口或基础 class)
我考虑过使用 System.Configuration
但有一些缺点 - (1) 我必须明确地使用命名空间中的各种 classes (例如 ConfigurationElement
、ConfigurationElementsCollection
等)和 (2) 为了支持 "any" 配置 class 实例,我需要实现一些反序列化时的工厂。
Catel 的(很棒)SavableModelBase<>
class 的替代方法是 Save/Load 方法,非常方便且易于使用。我用这种方法看到的唯一缺点是 XML 本身有点 "verbose" 并且很难手动编辑它。
是否有一些方法可以控制文件中省略的 "extra" 标记(例如删除命名空间(xmlns:ctl2="http://schemas.datacontract.org/2004/07/InheritedConfiguration.CatelConfig"
,然后是 ctl2:SomeType2Prop1
)和 graphid(graphid="5"
)) ?
或者,有没有我可以使用的 "global" 编辑器?
谢谢,
汤姆
Catel 的 xml 有点臃肿的原因是它在底层使用了 DataContractSerializer。从我的头顶来看,序列化程序中有一个优化选项,但不确定是否值得这么麻烦。
您可以查看的另一个选项是 Catel 中的 IConfigurationService,如果它在后台也适合您并存储为 key/value 集合。
我正在开发一个应该 "plug-able" 的系统 - 用户应该能够指定在其中交互的各个部分 ("composable application")。
作为应用程序的一部分,我有一个"processor"的概念,应该配置相关配置class。
例如:
<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
共享一些公共接口或基础 class)
我考虑过使用 System.Configuration
但有一些缺点 - (1) 我必须明确地使用命名空间中的各种 classes (例如 ConfigurationElement
、ConfigurationElementsCollection
等)和 (2) 为了支持 "any" 配置 class 实例,我需要实现一些反序列化时的工厂。
Catel 的(很棒)SavableModelBase<>
class 的替代方法是 Save/Load 方法,非常方便且易于使用。我用这种方法看到的唯一缺点是 XML 本身有点 "verbose" 并且很难手动编辑它。
是否有一些方法可以控制文件中省略的 "extra" 标记(例如删除命名空间(xmlns:ctl2="http://schemas.datacontract.org/2004/07/InheritedConfiguration.CatelConfig"
,然后是 ctl2:SomeType2Prop1
)和 graphid(graphid="5"
)) ?
或者,有没有我可以使用的 "global" 编辑器?
谢谢,
汤姆
Catel 的 xml 有点臃肿的原因是它在底层使用了 DataContractSerializer。从我的头顶来看,序列化程序中有一个优化选项,但不确定是否值得这么麻烦。
您可以查看的另一个选项是 Catel 中的 IConfigurationService,如果它在后台也适合您并存储为 key/value 集合。