我有一个类型,一个字符串和一个对象。

有什么方法可以调用parse方法或在字符串上动态转换为该类型?

基本上我该如何删除逻辑中的if语句

object value = new object();
String myString = "something";
Type propType = p.PropertyType;

if(propType == Type.GetType("DateTime"))
{
    value = DateTime.Parse(myString);
}

if (propType == Type.GetType("int"))
{
    value = int.Parse(myString);
}

并像这样做更多的事情。
object value = new object();
String myString = "something";
Type propType = p.PropertyType;


//this doesn't actually work
value = propType .Parse(myString);

最佳答案

TypeDescriptor 进行救援!:

var converter = TypeDescriptor.GetConverter(propType);
var result = converter.ConvertFrom(myString);

所有原始类型(加上Nullable<TPrimitive>和许多其他内置类型)已经集成到TypeConverter基础结构中,因此“开箱即用”受支持。

要将自定义类型集成到TypeConverter基础结构中,请实现自己的 TypeConverter 并使用 TypeConverterAttribute 用新的TypeConverter装饰要转换的类

关于c# - C#:从System.Type动态解析,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2380467/

10-10 18:42