我使用通用类作为响应数据合同.一切都很好,这大大简化了我的WCF服务的设计.
每个请求都有一个带有以下签名的标准响应对象:
状态(枚举)
消息(字符串)
结果(T)
以下是响应类:
[DataContract] public class Response{ 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类吗?我宁愿不让多个类混乱我的代码.
好的找到答案
您可以使用以下语法指定序列化版本:
[DataContract(Name ="MyClassOf {0} {1}")]
class MyClass {}
所以,如果我有一个名为Response的类,它将采用Generic T参数
[DataContract(Name ="ResponseOfType {0}")]
class Response {}