迭代类型列表并将类型作为参数

时间:2017-03-15 10:07:58

标签: c#

我有以下问题:

我想迭代一个类型列表,并在循环中将类型作为参数传递给泛型函数,不知何故,这不起作用。如果真的没有办法,我可以对它进行硬编码,但这显然不会像#34;漂亮"使用循环。

通用方法:

public async Task GenericMethod<T>() where T : class
{
    // Does something ...
}

类型清单:

List<Type> listOfTypes = new List<Type>() { typeof(classA), typeof(classB) };

发生问题的迭代:

foreach(Type type in listOfTypes)
{
    await GenericMethod<type>();
}

错误讯息:

  

CS0118&#39; type&#39;是一个变量但是像类型一样使用

仅供参考:这可行(硬编码):

await GenericMethod<classA>();

1 个答案:

答案 0 :(得分:0)

您不能将变量类型用作通用类型参数。也许考虑将方法中的变量类型作为方法参数传递。例如:

public async Task GenericMethod(Type varType)
{
    // Does something with: varType ...
}

如果您需要在运行时确定对象的类型,则需要将该对象声明为动态