2013-06-28 50 views
1

我從XSD生成類,需要填充類到序列化爲xml在工廠處理不同版本的類

我有不同的類,包含進入生成類的所有信息。

問題是生成的類有版本,這些類中的屬性是同一版本中的其他類。

class LocalData 
{ 
    public MyClass property { get; set; } 
} 

class XmlVersion1 
{ 
    public MyClassV1 property { get; set; } 
} 

class XmlVersion2 
{ 
    public MyClassV2 property { get; set; } 
    public MyClassXV2 newProperty { get; set; } 
} 

MyClassV1V2數據基本上是相同的,因此可以使用相同的代碼。

我想作一個工廠,只是採取了LocalData類和任何版本的類和填充數據的版本類,但我碰到的時候我想做property = new MyClassVx一個問題,因爲工廠不知道它應該創建哪個版本

我能做

if (parameter is MyClassV1) 
    paramter.MyClassV1 = new MyClassV1 

等等,但就是代碼了很多。

這是爲了生成由外部公司指定的xml消息,它們有不同的版本,我們必須能夠將內容序列化並反序列化到我們的內部系統中。

回答

0

我們還沒有找到解決這個特定問題的方法,並選擇使用AutoMapper,它似乎以不同的方式解決了我們的問題。

我們製作了一個工具,它接收生成的類並通過彙編創建AutoMapper所需的映射類。如果你有很大的生成類,你也可以這樣做。現在我們可以創建數千行映射類所需的代碼。它解決了將'object'類型映射到特定類時遇到的問題。我不知道這是否有幫助,但它是有用的。

0

想法很簡單。工廠不會關心版本。但新客戶將永遠支持舊版本的功能。如果0.5版本有一個方法來接收訂單列表(例如這是一個購物應用程序),0.6版本也應該有相同的方法。我們有相同的結構,我們正在這樣做。

相關問題