2011-03-22 7 views
1

개체를 수정하지 않고 특정 유형의 개체를 만들 때 시작되는 이벤트에 가입 할 수 있습니까? 라벨 유형의 이벤트에 대한 서명 예를 들어 은 라벨의 모든 인스턴스가 생성 될 때 그것은 공장을 사용하여이 가장 수행 할 것입니다 내 나쁜 영어개체 생성 이벤트 등록

답변

3

에 대한

죄송합니다 (매개 변수로 라벨의 인스턴스를 전달) 발사 무늬. LabelFactory에서 Label 객체의 생성을 래핑하면 Label Factory는 객체가 만들어 질 때마다 발생하는 이벤트를 노출 할 수 있습니다. 이 같은

뭔가 :

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

    public event LabelEventHandler LabelCreated; 
}  
+0

+1 내 것보다 나은 해결책입니다. – Tejs

+0

팩토리는 좋은 해결책이지만, Windows Forms Disigner로 레이블을 만들 때는 그렇지 않습니다. –

+0

레이블 생성을 자신의 코드로 옮길 수 있습니까? 기능적으로, Factory 메소드를 사용할 수있는 코드에서 코드를 작성하는 것과 동일해야합니다. – Thomas

1

하지 자신의 생성자에서 이벤트를 발생하는 문제의 개체를 수정하지 않고.

@ Adrian의 솔루션은 항상 새로운 인스턴스를 얻기 위해 공장을 나가는 한 좋은 절충안입니다. 그러나 팩토리 외부에서 인스턴스화하면 이벤트가 실행되지 않습니다.