, , ?
, , , .
, - ...
private Class1 instance1;
void callback(...)
{
}
void myfunction()
{
this.instance1.DataCalled += this.callback;
this.instance1.DataCalled += this.callback;
}
, , , , .
null , , NullReferenceException.
, .
public void CallData()
{
List<DataItem> dataItems = new List<DataItem>();
var handler = this.DataCalled;
if (handler != null)
handler(this, dataItems);
}
: , , , , GetNewDataItems, .
, , , , - , .
: , , , , , , , , .
- ...
void dataHelper_DataCalled(object sender, List<DataItem> dataItemsList)
{
(sender as Class1).DataCalled -= dataHelper_DataCalled;
}
, , , .
, , . , null, .
private DataHelper.DataCalledEventHandler myFunctor;
public void CallData(DataHelper.DataCalledEventHandler functor)
{
this.myFunctor = functor;
}
private void WhenTheCallCompletes()
{
var functor = this.myFunctor;
if (functor != null)
{
this.myFunctor = null;
List<DataItem> dataItems = new List<DataItem>();
functor(this, dataItems);
}
}
... dataHelper.CallData(this.dataHelper_DataCalled); ...