이 이벤트 발생시 전달하는 클래스를 제너릭으로 만들면 동작은 잘 되지만
이벤트 생성 처리시에 문제가 있다.
여기서의 생성 처리시 문제란 VS가 자동으로 생성해 주는 경우이다.
void textBox1_TextChanged(object sender) { }
원래는 이렇게 생성 되어야 한다.
물론 위의 것을 아래로 수정해도 된다.
void textBox1_TextChanged(object sender, DChangeEventArgs<String> e) { }
이 문제의 해결은 제너릭으로 만들어 진 것을 다시 상속받아 제너릭이 아니게 만들면 된다.
class DTextChangeEventArgs : DChangeEventArgs<String> { public DTextChangeEventArgs(String oldValue, String newValue) : base(oldValue, newValue) { } }
물론 EventHandler<T> 도 문제가 있으므로
이것은 직접 delegate를 이용한 EventHandler를 만들어 이용하도록 하자.
//public event EventHandler<DTextChangeEventArgs> TextChanged; public delegate void DTextChangeEventHandler(object sender, DTextChangeEventArgs e); public event DTextChangeEventHandler TextChanged;