我有一个现有的基类型,我想把它作为字符串的类型名称转换为派生类型,所以像这样:
public void DoStuffInDerivedType(string derivedName) {
(base as Type.GetType(derivedName)).DoThisThing();
}
我很确定无法做到这一点,但肯定会很高兴知道。感谢
编辑:我知道我可以使用类型名称中的反射来构造对象,但我想使用现有对象。而且我也知道这通常是一个坏主意。但是我想将它用于SpecFlow BDD功能。答案 0 :(得分:10)
我会重复你可能不需要这样做的建议,但因为我之前做过这个操作:
Convert.ChangeType(ItemToCast, Type.GetType(stringNameOfType)))
应该适合你。
答案 1 :(得分:2)
我不认为您需要将其转换为派生类型。您应该能够将它转换为基类型并使用共享接口(无论是基类还是文字接口)来执行您想要的任何操作。
如果没有,请考虑将行为添加为接口要求,以便可以这样做。
最后:你需要 这样做的一种可能性就是如果你重写演员阵容......在这种情况下,我几乎可以肯定如果没有重要的反思,你就无法做到这一点。