从类型名称转换为类型作为字符串

时间:2016-03-17 16:58:51

标签: c# .net reflection casting

我有一个现有的基类型,我想把它作为字符串的类型名称转换为派生类型,所以像这样:

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

我很确定无法做到这一点,但肯定会很高兴知道。感谢

编辑:我知道我可以使用类型名称中的反射来构造对象,但我想使用现有对象。而且我也知道这通常是一个坏主意。但是我想将它用于SpecFlow BDD功能。

2 个答案:

答案 0 :(得分:10)

我会重复你可能不需要这样做的建议,但因为我之前做过这个操作:

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

应该适合你。

答案 1 :(得分:2)

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

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

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