Редактировать:
Извините, вам нужен параметр типа (то есть typeof(T)
).В этом случае вы все еще используете this.GetType()
, но добавляете .GetGenericArguments()[0]
после.
Попробуйте выполнить синтаксический анализ: вам нужно создать новый экземпляр типа, который вы не знаете
Существует дваСпособы: Во-первых, без изменения остальных, с помощью класса Activator и следующего кода:
result = (T) Activator.CreateInstance(typeof(T))
( MSDN ).
Затем вы можете добавить "новое "ограничение для вашего типа:
MyClass<T> where T : new() {...}
result = new T();
Оба примера требуют конструкторов без параметров.Если вы хотите передать параметры, вам нужно углубиться в System.Reflection, получить список конструкторов и вызвать тот, который вам нужен.Заводской шаблон также может выполнять эту работу.