【问题标题】:Implement IExtensibleDataObject on a Base class在基类上实现 IExtensibleDataObject
【发布时间】:2010-01-11 23:18:52
【问题描述】:

我们目前有几个 WCF 服务直接通过网络公开我们的域模型。换句话说,我们没有一层 DTO 来映射我们的域和服务层。我别无选择,只能用 [DataContract] 和 [DataMember] 直接装饰我们的域对象。我想在网络上公开的所有域对象上实现 IExtensibleDataObject。有人认为在基类上实现 IExtensibleDataObject 有什么问题吗?所以我会:

[DataContract]
public EntityBase:IExtensibleDataObject{///IExtensibleDataObject Impl}

[DataContract] 
public Person:EntityBase{}

[DataContract]
public Employee:Person{}

提前致谢

【问题讨论】:

  • 您的代码应该可以正常工作。事实上,如果您查看 svcutil 生成的代码,您会看到与您的代码一模一样的代码。查看此链接了解更多信息:msdn.microsoft.com/en-us/library/…

标签: wcf inheritance versioning


【解决方案1】:

谢谢马特。我想我知道它工作正常,但我的问题与 SOA 设计更相关。我知道在 OO 世界中这很好,但由于我的域对象也用作 DTO,所以我担心添加这个继承链会导致问题。还有其他人实现 IExtensibleDataObject 吗?如果是这样,您是在所有数据合同上还是在基类上实现 IExtensibleDataObject?

【讨论】:

  • 抱歉,我误解了您的要求。从纯 SOA 的角度来看,拥有像 IExtensibleDataObject 这样的机制是不可取的,因为它可以从契约的角度掩盖事物。话虽如此,我认为这个想法是一种方便。这是一篇包含优点(帖子本身)和缺点(第一条评论)的好帖子:bloggingabout.net/blogs/vagif/archive/2009/03/29/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-22
  • 1970-01-01
  • 2010-10-27
  • 1970-01-01
相关资源
最近更新 更多