Я хотел бы написать общий метод , который создает новые экземпляры указанного типа. Я пытался
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 () нуждается в указанном фактическом типе. Я не знаю, возможно ли предоставить что-то подобное во время выполнения, но приведенный выше код не компилируется.
Итак, у меня есть экземпляр неизвестного ссылочного типа, и мне нужно создать несколько экземпляров одного типа.
Кто-нибудь знает методику достижения такого поведения?