2013-10-21 50 views
2

我有以下靜態類傳遞類型變量作爲一般類型參數爲靜態

public static class MyFoo<T> where T : class 
{ 
    public static IBar<T> Begin() 
    { 
     return new Bar<T>(); 
    } 
} 

在其他地方,我有System.Type的,這是我需要在通過如通用類型參數的變量,理想地:

public void MyFunction(Type type) 
{ 
    MyFoo<type>.Begin(); 
} 

我知道它可能通過反射返回一個MyFoo的實例(如果我使它非靜態),但這不會是理想的。無論如何將類型作爲泛型類型參數傳遞給MyFoo靜態類?

+1

首先,如果你使它不是靜態的,你不需要反射,你可以強制一個無參數的構造函數,在'T'上有一個通用約束。其次,你想在這裏解決什麼問題?爲什麼不是T的一個參數MyFunction(它可以推斷爲你) –

+0

看到這篇文章http://stackoverflow.com/questions/5858591/c-sharp-static-types-cannot-be-used-as-type - 參數 – Sorceri

+0

謝謝你回到我身邊。 @BenjaminGruenbaum不幸的是,我不能透露太多,但如果可能的話,這對我來說是最有利的,這樣可以爲我自己節約很多時間,形成我繼承的東西。我將解除這種情況!謝謝。 – EverythingGeek

回答

4

不能這樣做。第二個樣本中的變量type的值僅在運行時間處已知。第一個樣本必須中的T類型參數解析爲編譯時間。請致電Activator.CreateInstance()

+0

感謝您回覆我,我將從非靜態版本製作解決方法:) – EverythingGeek

相關問題