动态转换成双倍?到PropertyInfo.PropertyType?

时间:2019-05-31 20:55:57

标签: c# reflection casting

我正在尝试将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));

0 个答案:

没有答案