2011-03-22 82 views
1

是否可以注册在创建特定类型的对象时触发的事件,而不是修改对象? 例如,签署标签类型的此事件触发它创建标签的每个实例都在使用一厂(通过标签作为参数的实例)注册对象创建的事件

对不起我的英语不好

回答

3

这将很好地完成模式。如果将Label对象的创建包装到LabelFactory中,那么标签工厂也可以公开每次创建对象时触发的事件。

事情是这样的:

public class LabelFactory  
{  
    public Label GetLabel() {...}  

    public event LabelEventHandler LabelCreated; 
}  
+0

+1比我的更好的解决方案。 – Tejs 2011-03-23 12:06:56

+0

工厂是一个很好的解决方案,但不是在Windows Forms Disigner创建标签的情况下 – 2011-03-23 12:20:20

+0

您可以将标签创建移动到您自己的代码中吗?在功能上,它应该是相同的在你的代码中创建它,你可以使用Factory方法。 – Thomas 2011-05-23 19:30:26

1

不是没有修改对象的问题火在其构造的事件。

@阿德里安的解决方案是一个很好的折衷,只要你总是通过工厂去获得一个新的实例;但是,如果您在工厂外实例化,则不会触发任何事件。