如何存储列表/数组/任何类型的集合.或者键入名称,以便将它们作为类型传递给函数
本文关键字:类型 函数 存储 何存储 列表 数组 或者 集合 任何 | 更新日期: 2023-09-27 18:08:08
例如:
var types = new List<Type>();
types.Add(OneObject);
types.Add(TwoObject);
foreach(var type in types)
{
MyMethodToTest<type>();
}
如果我这样称呼它,这个方法就会起作用:
MyMethodToTest<OneObject>();
MyMethodToTest<TwoObject>();
我可以像上面那样做,但我很快就会有很多类型,循环会更好
使用反射获取MyMethodToTest
方法,然后使用MakeGenericMethod
:
var method = someType.GetMethod("MyMethodToTest");
foreach(var type in types)
{
method.MakeGenericMethod(type).Invoke(null);
}
不能像那样混合泛型和类型实例。相反,你必须有如下的东西,或者使用一些反射技术
Public void MyMethodToTest(Type t){}
public Foo: ICoolThing {}
public Bar: ICoolThing{}
MyMethodToTest<Foo>();
MyMmethodToTest<Bar>();
public void MyMethodToTest(ICoolThing target)
您是否可以使用接口定义通用功能并通过接口