У меня есть этот код:
private int _someProperty;
public int SomeProperty
{
get => _someProperty;
set => SetProperty(ref _someProperty, value);
}
private void SetProperty<T>(ref T field, T value)
{
if (!field.Equals(value))
{
field = value;
}
}
Мне нужен SetProperty<T>
, потому что мне нужен набор logi c в большом классе с множеством свойств, и этот logi c применяется ко всем из них. Код работает для случая, когда _someProperty
является переменной. Но в моем случае это не работает, потому что я ссылаюсь на другое свойство вложенного класса, поэтому я получаю ошибку компиляции: «свойство или индексатор не могут быть переданы как параметр out или ref».
Поскольку свойства - это методы под капотом, я попробовал что-то вроде:
private setProperty<T>(ref Action<T> property, T value) {
//meaningful code
}
Но я все равно получаю ошибку компиляции.
Есть ли прямой способ передать свойство по ссылке для прямого решения эта проблема как-то?