在 WCF 中命名通用 DataContract
Posted
技术标签:
【中文标题】在 WCF 中命名通用 DataContract【英文标题】:Naming Generic DataContracts in WCF 【发布时间】:2010-10-05 07:40:03 【问题描述】:我使用泛型类作为响应数据协定。一切都很好,这大大简化了我的 WCF 服务的设计。
每个请求都有一个标准响应对象,其签名如下:
状态(枚举) 消息(字符串) 结果 (T)下面是响应类:
[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”提供了一个非常糟糕的名称
有没有办法解决这个问题?
我应该将这个类用作继承的抽象类吗? 我宁愿没有多个类使我的代码混乱。
【问题讨论】:
这就是***对我的价值……我知道我以前问过这个问题。甚至回答了!就是这样 - 谢谢 您的主要服务方法的返回类型是什么。即你可以你应该如何使用它。 PLZ 【参考方案1】:好的,找到了Answer
您可以使用以下语法指定序列化版本:
[DataContract(Name = "MyClassOf01")]
类 MyClass
所以,如果我有一个名为 Response 的类,它采用 Generic T 参数 我会用
[DataContract(Name = "ResponseOfType0")]
类响应
【讨论】:
【参考方案2】:[DataContract(Name = "ReturnObjectOfType0")]
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)
....
谢谢你,哈利
【讨论】:
以上是关于在 WCF 中命名通用 DataContract的主要内容,如果未能解决你的问题,请参考以下文章