开发者

Is there any way to hide/flatten base types in WCF service data contracts?

Consider the following simple example:

[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
}

The base class Base has no properties of interest to the WCF service consumers, but WCF forces me to also annota开发者_JAVA技巧te the Base class with a [DataContract] attribute. This essentially shows up on the service client as Employee : EmployeeBase with EmployeeBase being an empty class with no properties.

I do not want to expose the Base<T> class to the service in this way, so what are my options?

  1. DTO for the Employee class - I'd rather not add this complexity
  2. "Flatten" the DataContract hierarchy so that the data contract for Employee does not expose that it inherits from Base<T>. Is this possible? How?
  3. Other solution?

Thanks.


Each class in hiearchy has to be serializable / DataContract. If you don't want to expose hiearchy you have to use DTO or you can try to implement IDataContractSuroggate for your Employee class.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜