创建具有通用List对象的接口

时间:2011-01-24 09:52:52

标签: c# generics interface

我的数据结构如下:

public class HighLevelConversionData
{
    public int customerID {get;set;}
    public string customerName {get;set;}
    public decimal amountSpent {get;set;}
}

这些数据将由第三方和GWT前端访问,这意味着我将使用Web服务来移动数据。客户也是与开发团队不同的本地化,所以我想发送状态消息作为返回数据项的包装器,如下所示:

public class HighLevelConversionDataWrapper
{
    public int StatusCode {get;set;}
    public string StatusMessage {get;set;}
    public List<HighLevelConversionData> {get;set;}
}

但是我宁愿为这些方法继承一个接口,以确保我们始终发送状态码&amp;消息以同样的方式。但是我对泛型如何在界面中工作的理解似乎让我失望了。我相信它应该是这样的:

public Interface IServiceWrapper
{
    public int StatusCode {get;set}
    public string StatusMessage {get;set;}
    public List<T> ReturnedData {get;set;}
}

但是我来这里不见了。

2 个答案:

答案 0 :(得分:8)

这样的东西?

public class ConcreteWrapper : IServiceWrapper<HighLevelConversionData>
{
    public int StatusCode {get;set;}
    public string StatusMessage { get; set; }
    public List<HighLevelConversionData> ReturnedData { get; set;}
}

public class HighLevelConversionData
{
    public int customerID {get;set;}
    public string customerName {get;set;}
    public decimal amountSpent {get;set;}
}

public interface IServiceWrapper<T>
{
    int StatusCode { get; set; }
    string StatusMessage { get; set; }
    List<T> ReturnedData { get; set;}
}

答案 1 :(得分:2)

如果接口具有泛型类型参数,则接口本身必须是通用的,因此您需要执行以下操作:

public interface IServiceWrapper<T> 
{     
  public int StatusCode {get;set}     
  public string StatusMessage {get;set;}     
  public List<T> ReturnedData {get;set;} 
} 

然后在代码中指定类型参数,如下所示:

public class HighLevelConversionDataServiceWrapper 
          : IServiceWrapper<HighLevelConversionData>
{
   public List<HighLevelConversionData> ReturnedData {get;set;} 
}