当前位置:  开发笔记 > 编程语言 > 正文

在WCF中命名通用DataContracts

如何解决《在WCF中命名通用DataContracts》经验,为你挑选了1个好方法。

我使用通用类作为响应数据合同.一切都很好,这大大简化了我的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类吗?我宁愿不让多个类混乱我的代码.



1> Andrew Harry..:

好的找到答案

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

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

class MyClass {}

所以,如果我有一个名为Response的类,它将采用Generic T参数

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

class Response {}

推荐阅读
可爱的天使keven_464
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有