我想編寫一個通用的方法,該方法創建指定類型的新實例。我試圖創建一個n最常見的類型的新實例
protected T CreateNew<T>()
where T : new()
{
return new T();
}
這工作,如果我指定在編譯時的類型,就像
var x = CreateNew<Point>();
的一點是,我需要做這樣的事情
ISomeInterface inter;
if (selection == 1)
inter = new SomeClass();
else
inter = new SomeClass2();
// ...
ISomeInterface inter2 = CreateNew<typeof(inter)>();
但只
其中SomeClass實現ISomeInterface。 但是,由於CreateNew()需要指定的實際類型,因此無法編譯。我不知道在運行時是否可以提供類似的內容,但上面的代碼無法編譯。
所以我有一個未知引用類型的實例,我需要創建幾個相同類型的實例。
有誰知道一種技術來實現這種行爲?
非常感謝! 我只是對通用方法感到困惑,因爲我猜我沒有正確理解用C#編寫的泛型的一些內容,說明泛型可以在運行時重用(與C++模板不同) – 2009-01-20 16:09:55