【发布时间】:2019-09-04 09:52:56
【问题描述】:
我有一个未知类型的对象 o。我还有一个类型 t 我想将我的对象转换成它。
object o = GetExampleObject();
Type t = GetExampleType();
当我尝试调用时:
Convert.ChangeType(o, t);
我得到错误:
对象必须实现 IConvertible。
有什么办法可以投吗?
【问题讨论】:
-
唯一的方法是你可以将基类转换为继承类。您始终可以将变量转换为对象,然后将对象转换为类型。但通常你会得到运行时错误。其他方法是使用 Marshal StructToPtr 和 PtrToStruct。
-
这似乎是一个 XY 问题。在什么情况下您实际上会发生这种情况?我打赌有比转换未知类型更好的方法来处理这个问题。
-
另外,
Convert.Invoke是什么,您希望该功能做什么?您是否尝试过使用Convert.ChangeType?当您完成转换后,您会将结果存储在哪个变量中以及您将如何实际使用它? -
如果我们从问题中删除反射,如果您只能在代码中编写所有内容的确切类型,您是否有可以编译的示例类型和代码?我的意思是,您是否有类似
(T)Ocast 表达式或类似的东西,以便我们可以看到您要模仿的内容?你知道转换是否可能吗?
标签: c# .net reflection type-conversion