Если вы идете за одним утверждением, но по-прежнему пытаетесь не вызывать GetProperty
дважды, вы можете использовать C# вариант IIFE
((Action<PropertyInfo, object>)
((genderProp,x) =>
genderProp.SetValue(x, Enum.Parse(genderProp.PropertyType, "Male"), null)))
(inj.GetType().GetProperty("gender"), inj);
Я бы не рекомендовал делать это в реальный код, но несколько полезный метод, если вы хотите, чтобы некоторые сложные операторы повторно использовали один и тот же параметр в LINQPad, например.
Для реального кода рассмотрим dynamic
- который будет правильно обрабатывать все отражения (включая необходимое кэширование):
((dynamic)inj).gender = Enum.Parse(genderProp.PropertyType, "Male");