繁体   English   中英

如何存储列表/数组/任何类型的集合。 或键入名称,以便可以将它们作为类型传递给函数

[英]How do I store a List/Array/ any collection of types. Or type names so they can be passed as a type to a function

例如:

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)

您可以使用接口定义通用功能并通过该接口传递吗

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM