有没有办法隐藏/展平WCF服务数据合同中的基本类型?

时间:2010-08-17 06:19:39

标签: wcf datacontract datacontracts

考虑以下简单示例:

[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. 员工类的DTO - 我宁愿不添加这种复杂性
  2. “展平”DataContract层次结构,以便Employee的数据协定不会公开它继承自Base<T>。这可能吗?怎么样?
  3. 其他解决方案?
  4. 感谢。

1 个答案:

答案 0 :(得分:3)

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