繁体   English   中英

在C#中将信息从子级传递到父级对象的最佳方法是什么

[英]what is the best method for passing information from a child to a parent object in c#

我有一个可以动态创建许多子对象的对象。 这些子对象是从UserControl派生的。 传递信息以将信息传递回父级的最佳方法是什么? 过去我使用了委托事件,但最近我只是在子对象的构造函数中使用了对父对象的引用。

我确实对紧密耦合有所保留,因为我担心如果父级未能及时执行所引用的方法,子级对象可能会被束缚。

我不想开始一个新问题,所以我在这里问。

如果我为动态创建的对象关联了事件,并且该对象在以后被处置,那么在处置事件之前,我应该取消该事件的接线。

并且...如果我将动态创建的对象保留在数组或哈希表中,则只会从内存中删除该列表项,并丢弃该项。

这取决于情况。 如果一个对象想要观察另一个对象并对特定的变化做出反应,则事件是适当的。 在其他情况下,仅保留对父母的引用也很合适。 如果您想针对非常具体的案例提供建议,请提供该案例的详细信息。

取决于您对紧密耦合的态度以及实际情况。

就我个人而言,我认为委托/事件方法要干净得多。

传递引用意味着孩子需要了解父对象的类型吗? 好的,您可能会使用基类或接口,但这仍然是必需的。

委托/事件模型的好处在于,子对象可以仅发布事件,并且注册的人都可以接收事件。 经典观察者模式。

好吧,我认为正如Jon建议的“事件”最好观察其他控件的变化,这是最好的。 您还可以在主用户控件中创建属性,然后从子控件中获取,设置它,我一直都在这样做。

希望这可以帮助。

如果您担心紧密耦合,请考虑使用与父对象的接口,该接口仅公开将数据传递回所需的方法。

为了防止锁定子控件(即UI线程),您可以使用BackgroundWorker在单独的线程中进行工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM