2015-02-08 17 views
0

我正在研究一個應該是「可插入」的系統 - 用戶應該能夠指定與之交互的各個部分(「可組合應用程序」)。SavableModelBase <>加載/保存 - 「更清潔」XML或配置工具?

作爲應用程序的一部分,我有一個「處理器」的概念,應該配置相關的配置類。

例如:

<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,ConfigurationElementsCollection等)和(2)一起工作,以支持「任何」配置類實例,我需要t o在反序列化時實施一些工廠。

Catel的(真棒)SavableModelBase<>類有一個保存/加載方法,非常方便和易於使用的替代方法。我用這種方法看到的唯一缺點是XML本身有點「冗長」,很難手動編輯它。

是否有某種方法來控制文件省略的「額外」標記(例如,刪除命名空間(xmlns:ctl2="http://schemas.datacontract.org/2004/07/InheritedConfiguration.CatelConfig",然後ctl2:SomeType2Prop1)和graphid(graphid="5"))?

或者,我可以使用一些「全局」編輯器嗎?

感謝,

託默

回答

1

原因Catel的XML是有點臃腫是因爲它使用的DataContractSerializer引擎蓋下。從我的頭頂開始,序列化程序中有一個優化選項,但不確定是否值得這樣做。

你可以看到的另一種選擇是Catel中的IConfigurationService,它對你最好,並且作爲鍵/值集合存儲。

+0

謝謝吉爾特 - 一如既往,非常機智和相關的答案。我可能只需要使用System.Configuration解決方案(: - /)來手動編輯文件非常重要,而且在這種情況下,鍵值方法並不適合。 – 2015-02-09 13:12:01

相關問題