2

考虑以下简单示例:

[DataContract("{0}Base")]
public class Base<T> where T : Entity<T>
{
    // Common methods & properties.  No WCF exposed properties
}

[DataContract]
public class Employee : Base<Employee>
{
    // WCF exposed properties
}

基类 Base 没有 WCF 服务消费者感兴趣的属性,但 WCF 迫使我也用 [DataContract] 属性注释 Base 类。这实质上显示在服务客户端上,就像Employee : EmployeeBaseEmployeeBase一个没有属性的空类。

我不想以Base<T>这种方式将类公开给服务,那么我有什么选择?

  1. Employee 类的 DTO - 我不想增加这种复杂性
  2. “展平” DataContract 层次结构,以便 Employee 的数据协定不会暴露它继承自Base<T>. 这可能吗?如何?
  3. 其他解决方案?

谢谢。

4

1 回答 1

3

层次结构中的每个类都必须是可序列化的/DataContract。如果您不想公开层次结构,则必须使用 DTO,或者您可以尝试为您的 Employee 类实现 IDataContractSuroggate。

于 2010-08-17T09:08:37.383 回答