我有这个代码:
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;
}
}
Run Code Online (Sandbox Code Playgroud)
我需要它是SetProperty<T>因为我需要在一个具有大量属性的大类中设置逻辑,并且该逻辑适用于所有属性。_someProperty该代码适用于变量的情况。但就我而言,它不起作用,因为我引用了嵌套类的另一个属性,因此我收到编译错误:“属性或索引器可能无法作为 out 或 ref 参数传递”。
由于属性是底层的方法,我尝试了类似的方法:
private setProperty<T>(ref Action<T> property, T value) {
//meaningful code
}
Run Code Online (Sandbox Code Playgroud)
但无论如何我都会收到编译错误。
有没有一种直接的方法通过引用传递属性来以某种方式直接解决这个问题?
不,基本上。
可变引用返回仅获取属性存在潜在漏洞,但这可能对您没有帮助,因为: