【问题标题】:How to use a generic collection in WCF如何在 WCF 中使用泛型集合
【发布时间】:2015-04-10 11:57:12
【问题描述】:

我想返回包含项目数组的响应。
我希望能够在此响应中使用任何类。所以 item 数组是一个通用的 IList 属性。

我的客户端应用重用了 Response 和 Dto 类库。当尝试更新服务引用失败时;没有生成代理类。我搜索并发现我需要使用方式修复这个通用列表。

我怎样才能做到这一点?

响应类:

namespace x.Response
{
     [DataContract]
     public class BlockDataResponse<T> : ResponseBase
     {
            [DataMember]
            public IList<BlockDataDto<T>> DataList { get; set; }
     }
}

响应类中的项目类:

namespace x.Dto
{
    [DataContract]
    public class BlockDataDto<T>
    {
        [DataMember]
        public int RecordIndex { get; set; }

        [DataMember]
        public T Data { get; set; }
    }
}

任何类型的课程:

   namespace x.Dto.Definitions
   {    
       [DataContract]
       public class AbcDto : DtoBase<AbcDto>
       {
           [DataMember]
           public string Property1 {get; set;}
           //...
       }
   }

服务方式:

  [OperationContract]
  BlockDataResponse<AbcDto> GetAbcData(int startIndex, int blockSize);

【问题讨论】:

  • 看看this。不确定是否重复。
  • 谢谢,但这并不完全是我想要的。

标签: c# wcf generics


【解决方案1】:

好的。我刚刚解决了我的问题。

响应类:

namespace x.Response
{
     [DataContract]
     public class BlockDataResponse<T> : ResponseBase
     {
            [DataMember]
            public IList<T> DataList { get; set; }
     }
}

响应类中的项目类:

namespace x.Dto
{
    [DataContract]
    public class BlockDataDto<T>
    {
        [DataMember]
        public int RecordIndex { get; set; }

        [DataMember]
        public T Data { get; set; }
    }
}

任何类型的课程:

   namespace x.Dto.Definitions
   {    
       [DataContract]
       public class AbcDto : DtoBase<AbcDto>
       {
           [DataMember]
           public string Property1 {get; set;}
           //...
       }
   }

服务方式:

  [OperationContract]
  BlockDataResponse<BlockDataDto<AbcDto>> GetAbcData(int startIndex, int blockSize);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-16
    • 2019-09-06
    • 1970-01-01
    • 1970-01-01
    • 2013-04-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多