2011-11-27 90 views
0

我看到面向複合的編程和DCI作爲有趣的技術 在休息框架內使用,但遇到了問題。 是否有可能序列化一個mixin對象,並獲取它的所有屬性 屬性?例如:序列化組合對象

public class IHasOwner 
{ 
    string owner(); 
} 

public class HasEngine 
{ 
    string engine(); 
} 

比方說我們做與兩類上面 混入一個CarComposite對象。我能反序列化這個CarComposite類來獲取 以下XML?:

<CarComposite> 
    <owner></owner> 
    <engine></engine> 
</CarComposite> 

我很好奇,如何在一般的處理,但接近 關注.NET,因爲你canot反序列化接口。

+0

我想你總是可以在頂層的System.Xml類上手動推出一個序列化程序,這是什麼原因?您能詳細說明爲什麼這可能無法解決您的問題,以及您如何從C#中的mixins構建複合材料? –

+0

我可以使用動態代理構建複合或重新組合。我希望能夠從各種對象組成我的域對象,而不是使用繼承。類似於你可以用Qi4J做的事情。我想它會需要一個自定義的序列化器。 –

+0

我看到混合是否可以與Rest一起使用,如OpenRasta。也許答案是將組合的域對象映射到使用繼承創建的資源。這是傳回的資源,而不是域。這樣的資源應串行器罰款。 –

回答

1

我發現在RESTful服務中通常會調用視圖或資源模型。即一組啞數據類型爲您想要公開資源的方式量身定製。這些不需要匹配域對象。你確實需要能夠在兩者之間進行映射。愚蠢的資源模型很容易序列化。

對於域和服務模型對象之間的映射,AutoMapper可能非常有用。