我在核心库中有大量领域模型,其中还包含获取各种模型集的方法。多个 WCF 服务项目引用此库并发布集合,例如
GetProducts(int categoryId)
我最初的方法是用 DataContract 和 DataMember 属性装饰域模型,然后从 WCF 服务方法中返回它们。但是我看到了这种方法的缺陷,因为现在一些服务希望将不同的模型属性序列化给其他服务。
我想我有两个选择:
在每个 WCF 项目中,为该项目创建具有必要属性和特性的 DTO 类,并从服务方法中返回这些。从域模型构造 DTO。这看起来像是“正确”的方法,但随着域模型的扩展,设置和维护起来非常耗时。
编写我自己的 xml 序列化程序,根据项目动态选择要在运行时序列化的域模型的哪些属性。我不知道这是否可能!
(我还考虑了将我不想序列化的属性设置为默认值的“技巧”,然后在序列化后将它们改回来,但它太繁琐而且闻起来很糟糕)
有没有其他方法或者有没有办法减少 #1 中涉及的手动工作?