如果在运行时间之前我不知道T是什么,我可以使用反射将类型从object
转换为MyType<T>
吗?
答案 0 :(得分:5)
在编译时,您无法强制转换类型为未知类型。 Casting实际上只用作编译时构造,因为你需要知道类型才能直接使用它。
如果你的目标是通过Reflection使用对象,那么这是一个不同的场景。在这种情况下,您可以使用Type.MakeGenericType为对象创建正确的类型。
这将允许您使用反射来处理对象。
答案 1 :(得分:1)
在这种情况下的诀窍是使用具有泛型方法的非泛型类。
public class MyType
{
public T GetResult<T>() {
}
}
但请注意,这是在编译时发生的。泛型使您有机会在编译时创建类型或方法的不同“风格”;但是仿制药不动态!泛型是类型安全的,类型安全只能在编译时实现(因为它是检查类型安全的编译器)。