C# 关于不同类别的两个物体的

C# 关于不同类别的两个物体的,c#,oop,C#,Oop,我不确定标题是否足够清楚,但我不知道如何准确描述我的问题。我已经创建了一个名为Window的类,我想创建另一个与该类的属性相关的类。让我们把这个新的教室叫起来 因此,我们有一个类窗口的对象myWindow和类Box的对象myBox。我想确保myBox的大小永远不会超过myWindow的大小。在我看来(见下文): 问题是我不知道如何创建一个方法,它将创建另一个类的对象。同时,它们的属性必须不断地相互关联 请告诉我如何实现我的想法。像这样的事情 public class Window {

我不确定标题是否足够清楚,但我不知道如何准确描述我的问题。我已经创建了一个名为Window的类,我想创建另一个与该类的属性相关的类。让我们把这个新的教室叫起来

因此,我们有一个类窗口的对象myWindow和类Box的对象myBox。我想确保myBox的大小永远不会超过myWindow的大小。在我看来(见下文):

问题是我不知道如何创建一个方法,它将创建另一个类的对象。同时,它们的属性必须不断地相互关联

请告诉我如何实现我的想法。

像这样的事情

     public class Window
{
    private int _size { get; set; }
    public int Size
    {
        get
        {
            return _size;
        }
        set
        {
            if (value >= MyBox.Size)
                _size = value;
        }
    }
    public Box MyBox { get; set; }

    public Window(int myWindowSize, int myBoxSize)
    {
        if (myBoxSize > myWindowSize)
            throw new ArgumentException("box is bigger than window wah");

        Size = myWindowSize;
        MyBox = new Box(myBoxSize);
    }

    public void UpdateBoxSize(int newSize)
    {
        if (newSize > Size)
            throw new ArgumentException("box is bigger than window wah");
        MyBox.Size = newSize;
    }        
}

public class Box
{
    public int Size { get; set; }
    public Box(int myBoxSize)
    {
        Size = myBoxSize;
    }
}

你的意思是当窗口的属性改变时,框的属性也必须改变吗?你可以考虑使用依赖注入在这里<代码>窗口< /代码>需要一个机制来通知<代码> box <代码>它的大小已经改变了。这就是活动的目的。例如,如果
窗口
系统窗口
,则
需要订阅的
大小更改
事件。或者,如果假定
Box
表示模型,则可以使用绑定将窗口大小绑定到使用MVVM的框大小。@Sweeper是的,这是我问题的一部分。我只是不知道如何不断地将两个对象相互关联,因为属性或方法与对象相关@Geeky我会检查它,谢谢@MattBurland,也许我会知道如何创建一个方法,通知
窗口的大小已更改。问题是如何告诉程序
窗口
完全相关,反之亦然,然后在窗口下创建一个名为“更新框大小”之类的方法,并进行类似检查以确保新大小不大于窗口。一个名为
\u getBox
的公共方法?当你已经有了MyBox属性的公共getter时?老实说,我只是想给他一些可以快速使用的东西,我现在会为你们修改它。同时更新了代码-Matt之前盒子被设置为私有,所以它的getter也是私有的。好的,我得到了你的解决方案。我就是这个意思。问题是这两个对象相互关联的信息在哪里。所以,
myBox
是独立对象,两个对象之间没有任何连接。
     public class Window
{
    private int _size { get; set; }
    public int Size
    {
        get
        {
            return _size;
        }
        set
        {
            if (value >= MyBox.Size)
                _size = value;
        }
    }
    public Box MyBox { get; set; }

    public Window(int myWindowSize, int myBoxSize)
    {
        if (myBoxSize > myWindowSize)
            throw new ArgumentException("box is bigger than window wah");

        Size = myWindowSize;
        MyBox = new Box(myBoxSize);
    }

    public void UpdateBoxSize(int newSize)
    {
        if (newSize > Size)
            throw new ArgumentException("box is bigger than window wah");
        MyBox.Size = newSize;
    }        
}

public class Box
{
    public int Size { get; set; }
    public Box(int myBoxSize)
    {
        Size = myBoxSize;
    }
}