我有一个测试,可以找到从BaseClass
继承的所有类。 BaseClass
有一个属性,其方法使用泛型:
abstract class BaseClass
{
public MyTools Tools { get; set;}
public abstract List<TEntity> GetAll();
public virtual IList<TEntity> Convert<TEntity, TEntityOther>()
{
//...
}
}
class MyTools
{
IList<T> List<T>();
}
然后,我需要模拟T List<T>()
方法。该方法用于Create
方法。例如:
class MyClass: BaseClass<MyEntity>
{
public override List<MyEntity> GetAll()
{
var x = this.MyTools.List<SomeClass>();
return this.Convert<MyEntity, SomeClass>(x);
}
}
我不知道在GetAll
内使用什么类型来调用List
方法。
这是我的测试:
var xobjects = this.GetTypeInNamespace(myAssembly, typeof(BaseClass<>));
foreach(var obj in xobjects)
{
var myTools = new Mock<MyTools>();
//here is my problem
myTools.Setup(x => x.List< ANY >()).Returns(new List< ANY >());
var iobj = this.CreateInstance(obj);
iobj.MyTools = myTools.Object;
var result = iobj.GetType().GetMethod("GetAll").Invoke(iobj, null);
((ICollection)result).Count.Should().Be(0);
}
如何为任何T设置方法List <T>
?
我不知道T
是什么类型,我不在乎它是什么类型。