考虑以下情况:
a.ClassProperty.ValueProperty = 4;
其中:
class A
{
[...]
public PropertyClass ClassProperty
{
get { return new PropertyClass(m_someInformation); }
set { ComplexMultistepSetInformation(m_someInformation); }
}
[...]
}
和
class PropertyClass
{
[...]
public int ValueProperty { get; set; }
[...]
}
我的问题:当执行第一个给定语句时,代码将返回一个PropertyClass对象并更改' ValueProperty'在其中,但信息本身为' a'将保持不变。
我想拥有的是ClassProperty'在更改通过' ClassProperty'检索的PropertyClass对象的信息之后被调用。吸气。意思是,让第一行完成以下任务的方法:
PropertyClass tmp = a.ClassProperty;
tmp.ValueProperty = 4;
a.ClassProperty = tmp;
有没有办法改变吸气剂和固定器来完成它。
(附加信息:在A类中使用PropertyClass对象无济于事。在实际用例中,PropertyClass是本机代码的包装,简化了对变量的访问并提供了几种扩展方法,而本机对象的信息得到了&# 39;由财产制定者编写' ClassProperty')
答案 0 :(得分:1)
有没有办法改变吸气剂和固定器来完成它。
不,不是真的。代码:
a.ClassProperty.ValueProperty = 4;
简单地翻译成:
var tmp = a.ClassProperty;
tmp.ValueProperty = 4;
永远不会尝试拨打a.ClassProperty
二传手。
您可能希望更改为:
a.ModifyClassProperty(x => x.ValueProperty = 4);
ModifyClassProperty
有效的地方:
例如,您可以使用当前代码实现它:
void ModifyClassProperty(Action<PropertyClass> action)
{
var tmp = ClassProperty;
action(tmp);
ClassProperty = tmp;
}