WCF DataContract隐藏基类

时间:2011-12-28 02:13:02

标签: wcf dto

当我公开Employee DTO时,如何避免暴露我的基类及其成员, (当我添加服务引用时,不应该提及组织类/它的成员)。

   [Serializable]
    public abstract class Organization
    {
        public string Id{ get; set; }
        public string SSN{ get; set; }
    }

    [DataContract][Serializable]
    public class Employee :Organization
    {
        [DataMember]
        public string FirstName { get; set; }
        [DataMember]
        public string LastName { get; set; }
    }

2 个答案:

答案 0 :(得分:3)

为此,您需要将Employee合约分成界面并通过您的服务公开。

[Serializable]
public abstract class Organization
{
    public string Id { get; set; }
    public string SSN { get; set; }
}

[DataContract]
public interface IEmployee
{
    [DataMember]
    string FirstName { get; set; }
    [DataMember]
    string LastName { get; set; }
}

[Serializable]
public class Employee : Organization, IEmployee
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

将您的服务定义为返回IEmployee,然后只返回一个具体的Employee实例。

答案 1 :(得分:0)

从两个类中删除[Serializable]属性,你应该没问题。如果您使用[DataContract] attribue,那么在创建代理时,只有具有[DataMember]属性的properties / fileds可用。