何かが私のクラスでイベントをサブスクライブする、または私は方法などでサブスクリプション/ unsubsriptionをラップする必要があるときに通知されているのいずれかの方法があります:何かイベント/デリゲートを購読したときに通知を受ける方法はありますか?
public class MyClass : ISomeInterface
{
public event SomeEventHandler SomeEvent; //How do I know when something subscribes?
private void OnSomeEventSubscription(SomeEventHandler handler)
{
//do some work
}
private void OnSomeEventUnsubscription(SomeEventHandler handler)
{
//do some work
}
}
代わりの
public class MyClass : ISomeInterface
{
private SomeEventHandler _someEvent;
public void SubscribeToSomeEvent(SomeEventHandler handler)
{
_someEvent += handler;
//do some work
}
public void UnsubscribeFromSomeEvent(SomeEventHandler handler)
{
_someEvent -= handler;
//do some work
}
}
理由は、イベントは既にISomeInterface
に直接公開されているためですが、この特定の実装では、スタッフがいつ購読/退会するかを知る必要があります。
このコードでは、イベントサブスクリプションはスレッドセーフではありません。これを達成する簡単な方法は、 '_someEvent'をイベントとしてマークすることです。 – CodesInChaos
華麗な、ありがとう! – GazTheDestroyer