anonymous delegate <> System.Delegate

結局は

eventInfo.AddEventHandler(control, new EventHandler(
    delegate(object sender, EventArgs e)
    {
       action.Run();
    })
);

というコードが、

eventInfo.AddEventHandler(control,     
    delegate(object sender, EventArgs e)
    {
       action.Run();
    });

と書けないのが、つまり匿名デリゲートはSystem.Delegateと互換性が無いのが自由度を低くしていると思う。
あ、もちろん.NETの匿名デリゲートがクロージャやブロックではなく、コンパイラが自動的に生成するこんな感じの

private sealed class DisplayClass2
{
    public DisplayClass2(){}
    public void Add(object sender, EventArgs args)
    {
        this.action.Run();
    }
    public IAction action;
}

インナークラスのシンタクスシュガーであることは承知の上。