我正在尝试将double?
动态转换为PropertyInfo
的属性类型,该属性类型可能是int?
或decimal?
,也许还有其他类型。显式强制转换有效,但随后我需要类似的东西:
if(prop.PropertyType == typeof(int?))
{
prop.SetValue(obj, (int?)value);
}
else if(prop.PropertyType == typeof(decimal?))
{
prop.SetValue(obj, (decimal?)value);
}
// etc...
我考虑过使用Dictionary<Type, Action<...>>
包含执行演员表转换的动作,但我正在寻找更优雅的东西。 我可以编写一行代码来动态转换为属性类型吗?类似这样的东西,它会抛出InvalidCastException
:
prop.SetValue(obj, Convert.ChangeType(value, prop.PropertyType));