属性 设置在更改 属性 的 属性 时不被使用
Property set not getting used when changing a property of the property
我有一个超简单的class要点:
class Point
{
public Point(double x, double y)
{
X = x;
Y = y;
}
public double X;
public double Y;
}
我用盒子里的点class:
internal class Box
{
private Point _upperLHCorner = new Point();
private Point _lowerRHCorner = new Point();
internal Box() { }
public Point UpperLHCorner
{
get
{
return _upperLHCorner;
}
set
{
this._upperLHCorner = value;
_lowerRHCorner.X = _upperLHCorner.X + _width;
_lowerRHCorner.Y = _upperLHCorner.Y + _height;
}
}
public Point LowerRHCorner
{
get
{
return _lowerRHCorner;
}
}
}
当我在我的代码中设置 UpperLHCorner.X 时,UpperLHCorner 的 setter 没有被调用。相反 getter 被调用。我需要在适当的时候更改 LowerRHCorner 支持变量 x 和 y。我该怎么做?
您不能使用 UpperLHCorner
的 setter 来修改 _lowerRHCorner
的属性。唯一一次 setter 被调用是如果你给 UpperLHCorner
本身分配一个新值。要实现您需要做的事情,您必须使用带有 X
和 Y
参数的 SetUpperLHCorner
之类的方法。在该方法中,您可以调整 _lowerRHCorner
属性。
当然,如果你真的想,你可以在 Point 的 X
和 Y
属性上添加事件处理程序。但这将是... blech.
我有一个超简单的class要点:
class Point
{
public Point(double x, double y)
{
X = x;
Y = y;
}
public double X;
public double Y;
}
我用盒子里的点class:
internal class Box
{
private Point _upperLHCorner = new Point();
private Point _lowerRHCorner = new Point();
internal Box() { }
public Point UpperLHCorner
{
get
{
return _upperLHCorner;
}
set
{
this._upperLHCorner = value;
_lowerRHCorner.X = _upperLHCorner.X + _width;
_lowerRHCorner.Y = _upperLHCorner.Y + _height;
}
}
public Point LowerRHCorner
{
get
{
return _lowerRHCorner;
}
}
}
当我在我的代码中设置 UpperLHCorner.X 时,UpperLHCorner 的 setter 没有被调用。相反 getter 被调用。我需要在适当的时候更改 LowerRHCorner 支持变量 x 和 y。我该怎么做?
您不能使用 UpperLHCorner
的 setter 来修改 _lowerRHCorner
的属性。唯一一次 setter 被调用是如果你给 UpperLHCorner
本身分配一个新值。要实现您需要做的事情,您必须使用带有 X
和 Y
参数的 SetUpperLHCorner
之类的方法。在该方法中,您可以调整 _lowerRHCorner
属性。
当然,如果你真的想,你可以在 Point 的 X
和 Y
属性上添加事件处理程序。但这将是... blech.