出于好奇,我做了一些测试,但看起来它不起作用。
以下是我使用的数据合约:
[DataContract]
public class Person
{
[DataMember]
public virtual string FirstName { get; set; }
[DataMember]
public virtual string MidName { get; set; }
[DataMember]
public virtual string LastName { get; set; }
}
[DataContract]
public class Person2 : Person
{
[IgnoreDataMember]
public override string MidName { get; set; }
}
还有我的服务合同:
public interface IService1
{
[OperationContract]
Person GetPerson();
[OperationContract]
Person2 GetPerson2();
}
两个操作返回相同的结果。
您可能能够产生您正在寻找的结果的另一种方法可能是定义您的最小合同(缺少排除属性的合同)并从中继承添加其他操作所需的字段。
等效的数据合同看起来像:
[DataContract]
public class Person2 : Person
{
[DataMember]
public virtual string MidName { get; set; }
}
[DataContract]
public class Person
{
[DataMember]
public virtual string FirstName { get; set; }
[DataMember]
public virtual string LastName { get; set; }
}
而且我已经验证结果与我预期的一样。