您无法在编译时将类型转换为未知类型。强制转换实际上只是一个编译时构造,因为您需要知道类型才能直接使用它。但是,如果您的目标是通过反射处理对象,那么情况就不同了。在这种情况下,您可以使用Type.MakeGenericType创建正确的类型以便处理您的对象。这将允许您使用反射来处理您的对象。
在这种情况下的诀窍是使用一个具有通用方法的非通用类。public class MyType { public T GetResult<T>() { } } 请注意,这发生在编译时。泛型给予您在编译时创建不同“类型”或“方法”的机会;但泛型并非动态的!泛型是类型安全的,而类型安全只能在编译时实现(因为编译器检查类型安全性)。
MyType<T>
定义为:MyType<T> where T : object
,您就不会遇到任何问题,因为T已经为编译器定义,并且任何对象都继承自object。 - aevitas