我們知道你可以指向一個構造函數爲Func<T>
這樣的:C#:FUNC具有遺傳型的構造
Func<MyObject> constructor =() => new MyObject();
var newObject = constructor();
但是,有沒有辦法讓你知道一個對象的構造繼承自MyObject,但是你不知道它的確切類型?
Type inheritedObjectType = obj; // Parameter
Func<MyObject> constructor =() => new MyObject(); // as inheritedObjectType
var newInheritedObject = constructor; // Should now be of the inherited type
的答案用Activator
或任何返回Object
是不是一種選擇。
編輯:我不知道在編譯時派生類型是什麼類型。我只有一個System.Type
。
btw:到底什麼依賴注入框架會爲你做。大多數框架將允許註冊一個語法如下:'container.Register(typeof(MyBase),derived)',你可以得到一個新的實例,如下所示:'container.GetInstance()'et瞧。 –
Steven
2011-05-30 14:37:00
它工作完美。 – 2011-05-30 14:39:18