1

我想为所有与网格相关的任务提供一个接口。这些任务实现了这个接口:

public interface IDataForGrid<T>
{
    IGridResponse<T> GetList(IGridRequest request);
}

T 类型始终是 DTO 类。我不能为这个 DTO 创建一个通用接口,因为它们没有什么共同点。只是一个具有特定属性的愚蠢 DTO。

我想这样使用它:

public class Service1
{
    public IGridResponse CreateResponse(IGridRequest request)
    {

        ...
        IDataForGrid<T> aa;

        if(request == 1) aa = new CustomerGridData;
        if(request == 2) aa = new OrderGridData;

        var coll = aa.GetList();
    }
}

public class CustomerGridData : IDataForGrid<CustomerDTO>
{
   ...
}

问题是我不知道该放什么而不是 T。

4

2 回答 2

3

您也可以使该方法成为通用方法,以便可以根据需要替换 T :

public class Service1
{
  public IGridResponse<T> CreateResponse<T>(IGridRequest request)
  {
    ...
    IDataForGrid<T> aa;

    if(request == 1) cg = new CustomerGridData;
    if(request == 2) og = new OrderGridData;

    var coll = aa.GetList();
  }
}
于 2010-03-11T10:23:29.677 回答
3

也许我不理解你,但你不能做一个你所有的 DTO 都喜欢的超级类BaseDTO

然后像这样使用它:

public class CustomerDTO : BaseDTO {}

IDataForGrid<BaseDTO> aa;

var coll = aa.GetList();

这样,您的coll变量将是IGridResponse<BaseDTO>所有 DTO 对象都扩展自的类型。

有道理?

于 2010-03-11T10:26:26.657 回答