Здравствуйте, vaa, Вы писали:
vaa>SetNull принимает поля, но не св-ва или индексаторы.
vaa>Возможно ли что-то похожее для св-в чтобы сократить кол-во ифчиков?
vaa>vaa>class A
vaa>{
vaa> public string Name {get;set;}
vaa>}
vaa>void SetNull(ref string v) => if (v == "") v = null;
vaa>SetNull(ref a.Name);
vaa>
Если не важна производительность и типобезопасность, то можно подобное сделать через рефлексию, например:
void SetNullProperty(string input, object target, string propertyName)
{
if (input == string.Empty) SetPropertyValue(null, target, propertyName);
}
void SetPropertyValue(object input, object target, string propertyName)
{
target.GetType().GetProperty(propertyName).SetValue(target, input);
}
SetNullProperty("", a, "Name");
Основная проблема заключается в том, что для решения данной задачи без рефлексии, нужно иметь возможность получить делегат на setter формируемый свойством, а такой возможности нет.