如何在WCF中使用泛型集合

时间:2015-04-10 11:57:12

标签: c# wcf generics

我想返回包含item数组的响应 我希望能够使用任何具有此响应的类。因此,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);

1 个答案:

答案 0 :(得分:0)

确定。我刚刚解决了我的问题。

响应级别:

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