.net - 如何在运行时转换类型?

标签 .net reflection runtime type-conversion

我的情况应该很简单...我要从FROM转换的类型总是'string'。我想转换为...的内容可能很多,例如int,DateTimes,...字符串等。

这很容易:

string valueToConvertFrom = "123";

int blah = Convert.ToInt32(valueToConvertFrom);

但是...我不知道(直到运行时)我需要转换为的值是“Int”(或其他值)。我已经试过了:
string valueToConvertFrom = "123";

Type convertToType = typeof(int);

object blah = Convert.ChangeType(valueToConvertFrom, convertToType);

但这给了我以下错误:“对象必须实现IConvertible。”

我不想执行switch语句并根据类型名称调用“Convert.ToBlah” ...有什么建议吗?

最佳答案

干净的方法是使用TypeConverter。
您可以通过调用TypeDescriptor.GetConverter并使用类型转换器的实例进行转换来获取类型转换器的实例。
所以像这样:

string valueToConvertFrom = "123";

Type convertToType = typeof(int);

TypeConverter tc =  TypeDescriptor.GetConverter(convertToType);             

object blah =tc.ConvertFromString(valueToConvertFrom);

关于.net - 如何在运行时转换类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/312858/

相关文章:

c# - 我如何知道 ComboBox 中的值何时为 "re-selected"?

c# - HTTPWebRequest 无法创建 SSL/TLS 安全通道

java - 如何在javaFx中的应用程序窗口之前制作加载场景?

.net - 在运行时创建或编辑自定义配置部分

javascript - 取消 JavaScript 按钮时关闭弹出窗口。

C# 动态引用集合对象?

java - 我可以在 Java 中获取调用对象的实例吗?

c# - 将 SetValue 与隐式转换结合使用

go - 为什么 Goroutines 的执行时间相差很大?

.net - HttpWebRequest 到 URL 末尾带点