【发布时间】:2020-11-26 12:14:17
【问题描述】:
我有这个代码:
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>,因为我需要在具有大量属性的大类中设置逻辑,并且该逻辑适用于所有属性。
该代码适用于 _someProperty 是一个变量的情况。但在我的情况下,它不起作用,因为我引用了嵌套类的另一个属性,所以我收到编译错误:“属性或索引器可能不会作为 out 或 ref 参数传递”。
由于属性是底层的方法,我尝试了类似的方法:
private setProperty<T>(ref Action<T> property, T value) {
//meaningful code
}
但我还是得到了编译错误。
有没有直接的方法通过引用传递属性以某种方式直接解决这个问题?
【问题讨论】:
-
Related 实现。
-
非常有用,谢谢
标签: c# properties