Как мы знаем, вы можете указать на конструктор как Func<T>
, например:
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
.