使用反射强制转换为泛型类型对象



如果我不知道T是什么直到运行时,我可以使用反射将对象从类型object转换为MyType<T>吗?

不能强制转换为编译时未知的类型。强制转换实际上只在编译时构造时有用,因为您需要知道类型才能直接使用它。

如果您的目标是通过反射来处理对象,那么情况就不同了。在这种情况下,您可以使用Type。MakeGenericType为对象创建正确的类型。

在这种情况下的技巧是使用具有泛型方法的非泛型类。

public class MyType
{
    public T GetResult<T>() {
    }
}
但是,请注意,这发生在编译时。泛型使您有机会在编译时创建类型或方法的不同"风格";但是泛型是动态的而不是 !泛型是类型安全的,类型安全只能在编译时实现(因为是编译器检查类型安全)。

相关内容

  • 没有找到相关文章

最新更新