我有完全限定的类名,我必须使用它来进行类型转换。 我可以使用
获取类型someType=Type.GetType("TypeName").
反序列化后我得到的对象我必须将其特定类型转换为TypeName。
我试过
obj = (someType) SXmlSerializer.Deserialize("TypeName", someData);
但这不起作用。 是否有任何选项可用于仅使用类名作为字符串进行类型转换?
我必须将其转换为 someType ,因为我必须修改属性的值,即obj.SomeProperty = "AnotherValue"
。
答案 0 :(得分:2)
我必须将其转换为someType,因为我必须修改属性的值,即obj.SomeProperty =" AnotherValue"。
但是如果你在编译时不知道类型,你怎么知道它有SomeProperty
属性?
如果你想假设它确实并将类型检查延迟到运行时那么你可以使用dynamic
:
dynamic obj = SXmlSerializer.Deserialize("TypeName", someData);
然后你可以做
obj.SomeProperty = "AnotherValue";
如果对象没有SomeProperty
属性,那么在运行时会失败。
强制转换只影响方法在编译时的绑定方式。如果您在编译时不知道类型,那么在投射中没有任何价值。