当我公开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; }
}
答案 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可用。