Ima*_*mad 1 c# reflection types casting
我有一个方法可以转换DataTable为List<T>. 它工作正常,直到bit我的MySql数据库中有列。无法将bitvalue转换1为C#type bool。所以我试着把它转换成
Convert.ChangeType(value, prop.PropertyType);
Run Code Online (Sandbox Code Playgroud)
这里value是一些数据库返回,prop在PropertyInfo那里value将被分配。
它工作正常,但它破坏了枚举的添加方式。
例如,以前我能够将整数分配给 enum 字段,但现在出现错误
从“System.Int32”到“EnumsAndConstants.QuestionType”的无效转换。
我知道一种解决方案value只能在TypeCastingException发生时转换为类型,但我根本不希望发生异常。是否有适用于所有类型的具体解决方案?
你可以签prop.PropertyType.IsEnum入一个if语句并使用Enum.ToObject如下:
if (prop.PropertyType.IsEnum)
{
return Enum.ToObject(prop.PropertyType, value);
}
else
{
return Convert.ChangeType(value, prop.PropertyType);
}
Run Code Online (Sandbox Code Playgroud)