t
- это тип объекта , вычисляемый во время выполнения; Вы не можете использовать его там, где компилятор C # ожидает тип времени компиляции name . Компилятор выдаёт вам эту ошибку, потому что не может найти тип с буквальным именем «t».
Но, черт возьми, ты все еще можешь делать, что хочешь, хотя и не так просто:
var t = currentProperty.PropertyType;
var genericType = typeof(MyClass<>).MakeGenericType(t);
var x = Activator.CreateInstance(genericType);