我有一个System.Type存储在一个变量。我希望将对象的类型更改为此类型。Convert.ChangeType到System.Type
我有以下代码,但无法获取类型更改为类型。
理想情况下,我想:var intTest3 =(MyType)Convert.ChangeType(test, MyType);
返回一个int,当:MyType is a System.Int32
,这里是我迄今为止的工作 - 我要去哪里错了?
// object to cast to int
object test = 1;
// INT32 type
Type MyType = typeof(System.Int32);
// explicit type int WORKS
var intTest = (int)Convert.ChangeType(test, typeof(Int32));
// explicit type to int WORKS
var intTest2 = (int)Convert.ChangeType(test, MyType);
// explicit type to int WORKS - but as object
object intTest3 = Convert.ChangeType(test, MyType);
// cast to my type DOESNT WORK
var intTest3 =(MyType)Convert.ChangeType(test, MyType);
谢谢!
这不是对问题的最好解释,特别是因为类型是硬编码的。 – cjk 2010-03-01 13:52:52
我正在翻译2个API之间的数据。一个API提供一个包含数据的对象和一个包含这些数据的System.Type的变量。这些是在编译时设置的。 其他API要求任何输入是“正确的类型” - 所以我不能只发送对象,但是,如果对象的类型是“Int32”,那么它需要一个Int32变量。 所以我想这个问题是“如何将一个对象转换为一种类型,这只在运行时才知道”。 – bob 2010-03-01 14:16:56
@bob:你会期待这样的演员要做什么?你会如何使用结果?假设“var”不存在,因为它在这里不是真正相关的,否则你将如何声明intTest3?你可以使用泛型方法吗? (如果需要的话,可以让你在'typeof(T)'中传递给'T'到'ConvertType')。如果你可以发布更完整的代码来使用你想要的任何东西,那将会有帮助。 – 2010-03-01 14:26:36