如何从字符串转换为任何类型的对象?

时间:2009-09-30 13:23:15

标签: c# .net reflection

我需要从包含数据的字符串转换为使用反射传递的某种类型的对象。我有一个不可序列化的对象,其中包含任何类型的属性,我想将数据加载到该对象。

例如,该对象具有属性Color BgColor。当我尝试将“红色”值设置为该属性时,我无法从字符串转换为颜色。我需要一般代码。

2 个答案:

答案 0 :(得分:0)

尝试Convert.ChangeType进行常规转化。

但在你的情况下,我认为Color.FromName方法最好:

  

根据预定义颜色的指定名称创建Color结构。

答案 1 :(得分:0)

如果您需要做的只是将字符串转换为enum中的值,则可以使用类似于以下内容的代码:

public static T ToEnum<T>(this string original)
{
    Array values = Enum.GetValues(typeof(T));

    foreach (T value in values)
    {
        if (value.ToString().ToUpperInvariant() == original.ToUpperInvariant())
            return value;
    }

    throw new NotFoundException();
}

如果您需要转换其他类型,那么指定字符串的类型和格式可能会帮助人们更好地指导您。