我有一个通用方法:(简化)
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>
。将发生编译器错误。那么如何为这种通用方法编写存根呢?
编辑:稍微更改了代码。第一种方法将基于Type Parameter从数据库中检索。第二个是用于测试的存根。 很抱歉,我不确定这是否可以解释我想提及的内容。
感谢。
答案 0 :(得分:3)
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>());
}
}