我有一个动态创建许多子对象的对象。这些子对象派生自UserControl。传递信息以将信息传递回父母的最佳方法是什么?在过去,我使用了委托事件,但最近我只是在子对象的构造函数中使用父对象的引用。
我确实对紧耦合有所保留,因为我担心如果父对象未能及时执行引用的方法,那么子对象可能会被绑定。
我不想提出新问题所以我会在这里问。
如果我为动态创建的对象连接了事件并且稍后处理了该对象,那么我应该在处理事件之前取消该事件。
和...如果我将动态创建的对象保留在数组或哈希表中,只需删除该列表项就可以从内存中处理该项。
答案 0 :(得分:6)
这取决于具体情况。如果一个对象想要观察另一个对象并对特定更改做出反应,则事件是适当简单地保留对父母的引用在其他情况下是合适的。如果您需要针对特定案例的建议,请详细说明该案例。
答案 1 :(得分:2)
取决于你对紧耦合的态度以及手头的确切情况。
就个人而言,我认为委托/事件方法更清晰。
传入引用意味着孩子需要理解父对象的类型?好的,您可以使用基类或接口,但仍然需要它。
委托/事件模型的优点是子对象可以只发布事件,而已注册的人将接收事件。经典观察者模式。
答案 2 :(得分:0)
好吧,我认为Jon建议事件最好观察其他控件的变化,这是最好的。 你也可以在主用户控件中创建属性然后获取,从子控件设置它,我会一直这样做。
希望这会有所帮助。
答案 3 :(得分:0)
如果您担心紧耦合,请考虑使用父对象的接口,该接口仅公开传回数据所需的方法。
为了防止锁定子控件(例如UI线程),您可以使用BackgroundWorker
在单独的线程中完成工作。