You can have custom add/remove handlers for an event:
class A
{
private myDelecate del;
public event myDelecate myEvent
{
add
{
del += value;
value();
}
remove
{
del -= value;
}
}
}
And you don't need to call the public method to raise the event:
void Main()
{
A obj = new A();
obj.myEvent += new myDelecate(DEF);
}
Please note that this will only invoke the delegate being added. Your original solution invoked all the delegates that were added to the event.