我有一个现有的基本类型,我想在类型为字符串的名称,将其转换为一个派生类型的基础,所以是这样的:演员从类型名称为一个字符串类型
public void DoStuffInDerivedType(string derivedName) {
(base as Type.GetType(derivedName)).DoThisThing();
}
我很确定这不能完成,但肯定会很好地知道。由于
编辑:据我了解,我可以使用反射从类型名称构造对象,但我希望使用现有的对象
我有一个现有的基本类型,我想在类型为字符串的名称,将其转换为一个派生类型的基础,所以是这样的:演员从类型名称为一个字符串类型
public void DoStuffInDerivedType(string derivedName) {
(base as Type.GetType(derivedName)).DoThisThing();
}
我很确定这不能完成,但肯定会很好地知道。由于
编辑:据我了解,我可以使用反射从类型名称构造对象,但我希望使用现有的对象
我会重复一下,你可能并不需要这样做的建议,但因为我以前做过此操作:
Convert.ChangeType(ItemToCast, Type.GetType(stringNameOfType)))
应该为你工作。
我不认为你需要向它转换为派生类型。您应该能够将其转换为基本类型并使用共享接口(无论它是基类还是文字接口)来执行您想要完成的任何操作。
如果不是,请考虑将行为添加为接口要求,以便您可以这样做。
最后:你需要需要这样做的一种可能性是,如果你重写演员阵容...在这种情况下,我几乎可以肯定你不能没有一些重任反射。
考虑使用'Relection' – Ian
为什么你想投?你不能动态调用它吗?例如'((dynamic)this).DoThisThing();' –
如果'derivedName'在编译时不知道,那么编译器如何检查'DoThisThing'是否是所有可能'derivedName'上的有效方法传递给那个方法?你为什么想要演员演员?你有没有考虑过使用虚拟方法/接口? – Luaan