2017-03-15 100 views
0

我有以下問題:迭代通過類型列表,並傳遞一個類型作爲參數

我想通過一個類型列表和循環傳遞類型作爲參數傳遞給一個通用的功能,並堅信這種迭代不起作用。如果真的沒有辦法做到這一點,我可以對它進行硬編碼,但顯然不會像使用循環那樣「漂亮」。

通用方法:

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

的類型列表:

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

迭代那裏的問題occures:

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

錯誤消息:

CS0118「類型」是一個變量,而是使用類似類型

而只是FYI:這會工作(硬編碼):

​​
+5

閱讀關於反思。你不能那樣做。 – InBetween

+0

看這裏:http://stackoverflow.com/a/6563109/3966756 –

回答

0

不能使用一個變量類型的泛型類型參數。也許考慮將方法中的變量類型作爲方法參數傳遞。例如:

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

如果你還需要在運行時確定一個對象的類型,你需要聲明對象動態

相關問題