我遇到以下问题:(c#)
有一些类(IRC机器人),它具有方法,需要某些事件的结果来完成(通过它可以是异步的)。
也许不清楚:
// simplified
class IRC
{
void DoSomeCommand()
{
OnListOfPeopleEvent += new Delegate(EventData e) {
if (e.IsForMe)
{
ReturnToUserSomeData();
// THIS IS WHAT I NEED
OnListOfPeopleEvent -= THIS DELEGATE;
}
}
TakeListOfPeopleFromIrc();
}
}
我想在功能完成后删除该委托。有什么方法可以获取封闭本身的引用吗?
最佳答案
您可以使用可捕获自身的笨拙变量来执行此操作; -p
SomeDelegateType delegateInstance = null;
delegateInstance = delegate {
...
obj.SomeEvent -= delegateInstance;
};
obj.SomeEvent += delegateInstance;
必须使用带有
null
的第一行来满足确定的分配;但是您可以在匿名方法中捕获此变量。