>>764
>elem.Draw()と書いたのと同じ動作をしてほしいんです。 
>つまりelemがElemAのインスタンスならElemA.Drawが呼び出される。 

普通にやれば良い。何も問題は無い。

=====

using System;

class Element { public virtual void Draw() { Console.WriteLine("Element::Draw"); } }
class ElemA: Element { public override void Draw() { Console.WriteLine("ElemA::Draw"); } }
class ElemB: Element { public override void Draw() { Console.WriteLine("ElemB::Draw"); } }
delegate void DrawDelegate();

class Test {
    [STAThread]
    public static void Main(string[] args) {
        DrawDelegate    d1  = new DrawDelegate(new Element().Draw);
        DrawDelegate    d2  = new DrawDelegate(new ElemA().Draw);
        DrawDelegate    d3  = new DrawDelegate(new ElemB().Draw);
        d1();   // Element::Draw が表示される
        d2();   // ElemA::Draw が表示される
        d3();   // ElemB::Draw が表示される
    }
}