我使用通用类作为响应数据合约。一切都很好,这大大简化了我的WCF服务的设计。
每个请求都有一个带有以下签名的标准响应对象:
以下是响应类:
[DataContract]
public class Response<T>
{
public Response() {}
public Response(T result)
{
this.result = result;
if (result != null)
{
this.status = Status.StatusEnum.Success;
}
else
{
this.status = Status.StatusEnum.Warning;
}
}
public Response(T result, Status.StatusEnum status)
{
this.status = status;
this.message = message;
}
public Response(T result, Status.StatusEnum status, string message)
{
this.status = status;
this.message = message;
this.result = result;
}
[DataMember]
public Status.StatusEnum status { get; set; }
[DataMember]
public string message { get; set; }
[DataMember]
public T result { get; set; }
}
这很有效。我遇到的唯一问题是WCF客户端为此对象提供了一个非常糟糕的名称“ResponseOfAccountnT9LOUZL”
有没有办法解决这个问题?
我是否应该将此类用作继承的Abstract类? 我宁愿不让多个课程混乱我的代码。
答案 0 :(得分:27)
好的找到Answer
您可以使用以下语法指定序列化版本:
[DataContract(Name =“MyClassOf {0} {1}”)]
class MyClass {}
因此,如果我有一个名为Response的类,它采用Generic T参数 我会用
[DataContract(Name =“ResponseOfType {0}”)]
class Response {}
答案 1 :(得分:1)
[DataContract(Name = "ReturnObjectOfType{0}")]
public class ReturnObject<T>
{....
//Iservice
[OperationContract]
ReturnObject<AdresKisiBilgi> BeldeAdresKisiBilgiSorgula(string tcKimlikNo);
//Service
public ReturnObject<HbysBusiness.MernisGuvenService.AdresKisiBilgi> BeldeAdresKisiBilgiSorgula(string tcKimlikNo)
{
return new MernisBiz().BeldeAdresKisiBilgiSorgula(tcKimlikNo);
}
client:
public ReturnObjectOfAdresKisiBilgi BeldeAdresKisiBilgiSorgula(string tcKimlikNo)
{....
谢谢Harry