如何在 WCF 中使用泛型集合

How to use a generic collection in WCF

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

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

我怎样才能做到这一点?

回复class:

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

项目 class 响应 class:

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

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

任意类型 class:

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

服务方式:

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

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

响应class:

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

项目 class 响应 class:

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

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

任何类型 class:

   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);