属性 设置在更改 属性 的 属性 时不被使用

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 本身分配一个新值。要实现您需要做的事情,您必须使用带有 XY 参数的 SetUpperLHCorner 之类的方法。在该方法中,您可以调整 _lowerRHCorner 属性。

当然,如果你真的想,你可以在 Point 的 XY 属性上添加事件处理程序。但这将是... blech.