Я пытаюсь динамически преобразовать 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));