在运行时分配类型

Ami*_*aei 4 c# reflection

我有一个类型为T的变量x和一个字符串中的值.例如,我有:

bool x, value = "True"
int x, value = "1"
Run Code Online (Sandbox Code Playgroud)
  • 是否有通用的方法将值赋值/解析/反序列化为x?

注意T可以引用或原始类型!

Ste*_*e B 5

你可以使用Convert.ChangeType方法.

这将涵盖所有基类型转换.

示例: var i = Convert.ChangeType("1", typeof(int));

您还可以看看的IConvertible界面,您可以使用从或其他类型的转换自己的对象.

最后,正如codymanix所说,您可以依靠OOB XmlSerialization或二进制序列化来序列化您的对象.

[编辑]你可以在编译时检查目标类型是否可以转换,方法是将convert.ChangeType方法包装在如下的实用程序类中:

public static class ConvertUtility
{
    public static T Convert<T>(object source) where T : IConvertible
    {
        return (T)System.Convert.ChangeType(source, typeof(T));
    }              
}
Run Code Online (Sandbox Code Playgroud)