0
위임자 기반 이벤트 처리에서 매개 변수로 명시 적으로 지정하지 않고 '보낸 사람'참조를 보낼 수 있습니까? 대표자를 보내지 마십시오
나는 몇 가지 이벤트를 발생시키는 내부 클래스를 가지고 있고 테스트 목적을 위해 명시 적으로 이벤트를 호출합니다. 핸들러 방법은 보낸 사람의 참조를 사용 할 필요가있는 경우public class Manager {
public class DataStruct {
public int Id { get; private set; }
public event EventHandler Event1; // Can't be called by other classes
public void fireEvent1(Event1();} // So another caller...
// Delegates *can* be called by other classes
public delegate void DelegateHandler(DataStruct sender);
public DelegateHandler NewEvent;
public void DelegateHandler(DataStruct sender) {
MessageBox.Show(string.Format(
"{0} raises event", sender.Id));
}
}
}
// Form1 ///////////////////////////////////////////////////////////////////
partial class Form1 {
Manager.DataStruct dsRaiser, dsListener;
private void Form1_Load(object sender, EventArgs e) {
dsRaiser.Event1 += dsListener.SOME_HANDLER;
dsRaiser.NewEvent += dsListener.DelegateHandler;
}
private void button1_Click(object sender, ...) {
dsRaiser.fireEvent1(); // No argument needed but fireEvent1, not Event1().
}
private void button2_Click(object sender, ...) {
dsRaiser.NewEvent(dsRaiser); // Way to omit parameter dsRaiser?
}
//////////////////////////////////////////////////////////////////////////
당신은 내부로'Event1'를 표시 할 수 있습니까? –
어쩌면 단위 테스트의 요점을 놓치고 싶지만 대신에'DataStruct' (혼란스럽게도'class'입니까?)가 발생하는 조건/트리거를 테스팅하지 말고 이벤트 _forcing_보다는 이벤트 자체를 발생시켜야합니다 발사? 시험을 치러야 할 대상은 무엇입니까? –