我有一个WCF客户端,刚刚使用新方法(OperationContract)升级了Endpoint。我想编写一个通用的方法来处理来自这个新方法的响应以及端点上的现有方法。
我正在尝试创建一个“Base”响应类并为WCF端点提供它添加公共属性,但我注意到在我的处理程序方法中,属性没有被保留。
我想要继承的所有响应的类的代码如下所示:
public class ResponseBase
{
public string[] ItemsReturned;
public bool ItemsWereAvailable;
}
所以我添加了部分声明来将其传递到端点中的对象上。
public partial class RetrieveResponse :ResponseBase
{
}
public partial class RetrieveResponse2 :ResponseBase
{
}
这样我就有了一个处理程序方法,只接受“ResponseBase”作为输入。 我做错了吗?
答案 0 :(得分:1)
其实例将是操作合同的返回值和/或参数的任何类都应使用DataContract属性进行修饰,并将属性设置为DataMembers:
[DataContract]
public class ResponseBase
{
[DataMember]
public string[] ItemsReturned { get; set; }
[DataMember]
public bool ItemsWereAvailable { get; set; }
}
http://msdn.microsoft.com/en-us/library/ms733127.aspx
如果不是,则DataContractSerializer不会将它们序列化。