我正在開發一個類,它創建一個爲類指定的類的實例(使用Activator.CreateInstance
)(作爲類型參數或作爲構造函數的參數),所以當類創建一個實例時,創建類的實例是毫無意義的,因此使用泛型傳遞類型是有道理的。例如。在一個類和一個通用類之間共享代碼
var foo = new Foo<Bar>();
但是,這使得該類不可能在運行時使用,因爲類型參數是在編譯時聲明的。
要在運行時使用它,構造函數需要將該參數作爲參數。例如。
var foo = new Foo(new Bar());
的代碼中的類,其餘都是一樣的,所以如果這是兩個不同的類,然後會有很多重複的代碼。
問題:
- 如何共享代碼和避免重複的代碼?
- 可以(而且應該)這是同一類的兩個構造函數嗎?
- 我採取了錯誤的方法?也許
new Foo(typeof(Bar))
?
請解釋這背後的目的是什麼..目前它還不清楚/太寬..我假設爲「共享代碼」 - 組合/繼承。兩個構造函數 - 是的,可能的。 'typeof(Bar)' - 這是別的 - 取決於你想做什麼 –
我很好奇你的實現是什麼樣的。從這個問題來看,這聽起來更像是繼承的候選人而非泛型。或者如果'Foo'依賴於'Bar',那麼共同的屬性/方法可以調用另一個並避免重複。 – Theo
*我正在開發一個類,該類創建一個爲該類指定的類的實例(作爲類型參數或作爲構造函數的參數),因此在類時創建類的實例是毫無意義的無論如何創建一個實例,因此傳遞類型使用泛型是有道理的。* ...嗯? –