使用System.Type进行强制转换 - c#

max*_*axp 12 c# casting

是否可以使用对象将对象强制转换为所需类型System.Type?

我有一个搜索,普遍的共识是否定的,虽然我希望在C#4.0中引入一些可以帮助我的辅助工具.

即下面的内容不起作用,但伪代码就是我想要的.

object o = null;
var t = typeof(string);
...
string foo = (t)o;
Run Code Online (Sandbox Code Playgroud)

编辑:我需要XmlSerializer用来重建/反序列化为存储的类型t

Fra*_*ois 19

看一下:

var foo = Convert.ChangeType(o, typeof(string))
Run Code Online (Sandbox Code Playgroud)

  • 但是`Convert.ChangeType`仍然返回`object`类型,即它没有解决问题?! (2认同)

SLa*_*aks 3

这没有道理。

转换根本不会改变对象;而是会改变对象。它只是让您在编译时使用对象作为给定类型。
如果您不知道在编译时将其转换为什么类型,则转换是无用的,因为它不会让您对转换后的表达式执行任何操作。