使用类型的字符串键入类型

时间:2016-04-07 18:52:31

标签: c# reflection

我有完全限定的类名,我必须使用它来进行类型转换。 我可以使用

获取类型
someType=Type.GetType("TypeName"). 

反序列化后我得到的对象我必须将其特定类型转换为TypeName。

我试过

obj = (someType) SXmlSerializer.Deserialize("TypeName", someData);

但这不起作用。 是否有任何选项可用于仅使用类名作为字符串进行类型转换?

我必须将其转换为 someType ,因为我必须修改属性的值,即obj.SomeProperty = "AnotherValue"

1 个答案:

答案 0 :(得分:2)

  

我必须将其转换为someType,因为我必须修改属性的值,即obj.SomeProperty =" AnotherValue"。

但是如果你在编译时不知道类型,你怎么知道它有SomeProperty属性?

如果你想假设它确实并将类型检查延迟到运行时那么你可以使用dynamic

dynamic obj = SXmlSerializer.Deserialize("TypeName", someData);

然后你可以做

obj.SomeProperty = "AnotherValue";

如果对象没有SomeProperty属性,那么在运行时会失败。

强制转换只影响方法在编译时的绑定方式。如果您在编译时不知道类型,那么在投射中没有任何价值。