3
我有一個類:從一個配置文件使用一個字符串,用來初始化一個泛型類型
public class MyClass<T>
我有我讀了,比方說,Guid
該類型T
一個配置文件。
如何做到這一點,除了使用字符串從配置文件,而不是實際的類型(而不是硬編碼Guid
)?
MyClass<Guid> = new MyClass<Guid>();
我有一個類:從一個配置文件使用一個字符串,用來初始化一個泛型類型
public class MyClass<T>
我有我讀了,比方說,Guid
該類型T
一個配置文件。
如何做到這一點,除了使用字符串從配置文件,而不是實際的類型(而不是硬編碼Guid
)?
MyClass<Guid> = new MyClass<Guid>();
您需要完全限定的類型名稱:
var typeArgument = Type.GetType("System.Guid");
然後你可以使用反射來獲取的參數化類型:
var genericType = typeof(MyClass<>).MakeGenericType(typeArgument);
然後你就可以通過實例:
var instance = Activator.CreateInstance(genericType);
但我不是確定你爲什麼要這樣做,或者爲什麼它會在你的情況下有用。由於使用這種技術,你將永遠無法與MyClass<T>
其中T
被定義爲你在編譯時指定內容進行交互時,你失去了大部分的在第一時間使用泛型的優勢。
你是用'而不是硬編碼Guid'表示的意思嗎? – sll
這沒有任何意義。你爲什麼想這樣做?如果類型參數是動態的,那麼使用泛型來促進參數化*靜態*輸入沒有意義。 –
你是在一個奇怪的局面:當你有直接與生成的類型進行交互。 (我假設生成名稱爲GUID的類型。) –