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