为C#泛型类型方法创建存根

本文关键字:创建 存根 方法 泛型类型 | 更新日期: 2023-09-27 17:59:00

我有一个通用方法:(简化)

public class DataAccess : IDataAccess
{
    public List<T> GetEntity<T>()
    {
       return GetFromDatabase<T>(); //Retrieve from database base on Type parameter
    }
}

出于测试目的,我想创建一个存根,我希望"Foo"应该从中返回一些数据:

public class DataAccessStub : IDataAccess
{
    public List<T> GetEntity<T>()
    {
       List<Foo> listFoo = new List<Foo>();
       Foo foo = new Foo();
       foo.Name = "Some Name";
       listFoo.Add(foo);
       return listFoo; // I want Foo to be returned
    }
}

由于T还没有确定它是什么类型,所以我无法返回List<Foo>。将发生编译器错误。那么,我该如何为这种通用方法编写存根呢?

编辑:稍微更改了代码。第一个方法将基于类型参数从数据库中检索。第二个是用于测试的存根。很抱歉,我不确定这是否解释了我想说的话

谢谢。

为C#泛型类型方法创建存根

    interface IA
{
    List<T> Get<T>();
}
class StubA : IA
{
    public List<T> Get<T>()
    {
        var item = new Foo();
        var data = new List<Foo> {item};
        return new List<T>(data.Cast<T>());
    }
}