2011-11-27 106 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可能非常有用。