![]() |
1
2
因此,也许您要寻找的更多是接口实现:
|
![]() |
2
2
首先,你谈论的是窗体上的子元素,而不是窗体的实际子类。对吗? 因此,您希望删除窗体和按钮之间的依赖关系。这可以通过设计模式来解决。您可以让button实现一个如ibutton的接口。然后在表单中使用工厂类创建按钮,并返回IButton引用而不是MyButton。或者,使用依赖注入而不是工厂。 不管怎样,我看不出你所做的有什么好处,你能更详细地解释一下这个问题吗? |
![]() |
3
0
在您的示例中,按钮知道
你的代码应该是这样的
按钮根本不知道父窗体,只是一个普通的按钮。当然,家长登记了他们在
|
![]() |
4
0
如果你想让一个孩子对他父亲做点什么,父亲至少要知道孩子的存在。他不必知道细节,但是如果他应该对他的孩子做出反应,那么他需要一个事件处理程序、回调等,孩子会调用它。 这可以通过一个称为依赖倒置原理的基本原理来实现。依赖于外部类的类不应该依赖于具体的实现,而是依赖于实现的抽象。父母不应该需要一个特定的孩子,只需要一个看起来像一个并且行为像一个的孩子。出于同样的原因,孩子不必知道他们的特定父母,但是如果需要交互,孩子必须有某种方法来告诉父母事情,即使它不知道父母在听。 尝试一个包含ichild引用(按钮)和公共事件处理程序的父级(表单)。然后,创建一个实现ichild并具有可以引发的事件的子级。然后,您需要第三个类来创建(或给定)父级和子级,将子级赋予父级(作为ichild),并将子级的事件挂接到父级的事件处理程序。现在你的父母只知道它有一个孩子的样子,而你的孩子有一面旗子,当一些重要的事情发生时,他可以挥挥手,但不必知道谁在听。 |
![]() |
A B · C#Excel自动调整列避免长文本时出错 4 月前 |
![]() |
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 4 月前 |
![]() |
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 4 月前 |
|
Sei · Avalonia/WPF将路由器传递到控制模板 4 月前 |