Другие ответы на самом деле не отвечают на ваш вопрос:
Могу ли я сделать это: GenericClass<instance> = new GenericClass<instance>();
?
Нет, вы не можете. Как объясняют другие ответы, вы можете создать универсальный c объект с типами, известными только во время выполнения посредством отражения, но вы не можете использовать любую информацию о типе объекта, который вы только что создали во время компиляции.
Could Как ты мог, если это известно только во время выполнения? И если он не только известен во время выполнения, то вы не будете в этом беспорядке с самого начала; Вы должны отделить назначаемый тип во время компиляции (в вашем коде).
Generics, здесь красная сельдь. Ваша проблема заключается в том, что вы не знаете тип объекта при написании кода:
Type t = someMethodGivesMeATypeIDontKnowWhenWritingThisCode();
//I need to make an instance of this type.
//The only thing I know is that it needs to have a default contructor
//or it will crash
var o = Activator.CreateInstance(t);
Как вы думаете, какое время компиляции будет o
? Это не может быть ничем иным, кроме object
, потому что компилятор не знает и не может ничего знать о реальном типе объекта.