2016-03-17 61 views
3

我有一个现有的基本类型,我想在类型为字符串的名称,将其转换为一个派生类型的基础,所以是这样的:演员从类型名称为一个字符串类型

public void DoStuffInDerivedType(string derivedName) { 
    (base as Type.GetType(derivedName)).DoThisThing(); 
} 

我很确定这不能完成,但肯定会很好地知道。由于

编辑:据我了解,我可以使用反射从类型名称构造对象,但我希望使用现有的对象

+0

考虑使用'Relection' – Ian

+0

为什么你想投?你不能动态调用它吗?例如'((dynamic)this).DoThisThing();' –

+2

如果'derivedName'在编译时不知道,那么编译器如何检查'DoThisThing'是否是所有可能'derivedName'上的有效方法传递给那个方法?你为什么想要演员演员?你有没有考虑过使用虚拟方法/接口? – Luaan

回答

3

我会重复一下,你可能并不需要这样做的建议,但因为我以前做过此操作:

Convert.ChangeType(ItemToCast, Type.GetType(stringNameOfType)))

应该为你工作。

2

我不认为你需要它转换为派生类型。您应该能够将其转换为基本类型并使用共享接口(无论它是基类还是文字接口)来执行您想要完成的任何操作。

如果不是,请考虑将行为添加为接口要求,以便您可以这样做。

最后:你需要需要这样做的一种可能性是,如果你重写演员阵容...在这种情况下,我几乎可以肯定你不能没有一些重任反射。

相关问题