19

我使用通用类作为响应数据协定。一切都很好,这大大简化了我的 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”赋予了一个非常糟糕的名称

有没有办法解决这个问题?

我应该将此类用作继承的抽象类吗?我宁愿没有多个类使我的代码混乱。

4

2 回答 2

27

好的找到答案

您可以使用以下语法指定序列化版本:

[DataContract(Name = "MyClassOf{0}{1}")]

我的班级 { }

因此,如果我有一个名为 Response 的类,它采用 Generic T 参数,我会使用

[DataContract(Name = "ResponseOfType{0}")]

类响应{}

于 2009-02-04T02:40:21.083 回答
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)
        {....

谢谢哈利

于 2010-06-30T11:28:56.850 回答