我们有一个大约有50~60个属性的类,这些属性依赖于同一类的属性+其他类的属性。目前,在更改一个属性时,我们正在提高其他20个属性的属性更改,这会使代码变得混乱且容易出错。处理这种情况的最佳方法是什么?任何建议的设计模式来解决这个问题?
public class ClassA
{
public ClassB classB;
public int Prop1
{
get { return CalculateValueForProp1(); }
}
private int prop2;
public int Prop2
{
get { return prop2; }
set
{
prop2 = value;
OnPropertyChange(nameof(Prop2));
OnPropertyChange(nameof(Prop1));
}
}
private int prop3;
public int Prop3
{
get { return prop3; }
set
{
prop3 = value;
OnPropertyChange(nameof(Prop3));
OnPropertyChange(nameof(Prop1));
}
}
public int CalculateValueForProp1()
{
return (this.prop2 * 10 + this.Prop1 * 20 + classB.AnotherProperty*10);
}
}
答案 0 :(得分:0)
尝试将属性的依赖关系映射到对象结构。因此,您必须找到属性之间的依赖关系。
如果您设法定义“基本”属性的基类,则可以派生具有依赖(例如计算)属性的类。因此,如果更改了基本属性,派生类也应该使用此事件,更新其属性并触发其自己的事件。
未经测试,但我希望你明白这一点:
public class ClassA
{
private int prop2;
public int Prop2
{
get { return prop2; }
set
{
prop2 = value;
OnPropertyChange(nameof(Prop2));
}
}
private int prop3;
public int Prop3
{
get { return prop3; }
set
{
prop3 = value;
OnPropertyChange(nameof(Prop3));
}
}
}
public ClassB classB
{
public ClassB(ClassA classAinstance)
{
classAinstance.PropertyChanged += (s,e) => OnPropertyChange(nameof(Prop1));
}
public int Prop1
{
get { return (this.prop2 * 10 + this.Prop1 * 20 + classB.AnotherProperty*10); }
}
}