elemに対して行う操作を、条件により分岐できます。
さっきの例ではDrawの呼び出しとか明記したけれど、つぎのようにすればhogeクラスでは実行する内容についての知識が要らなくなります。

publc class ElementExecutor{
public abstract void Execute(Element elem);
}
public class ElemDelegateExecutor<Delegate>:ElementExecutor{
Delegate _deleg;
public override void Execute(Element elem){
_deleg.Invoke(elem);
}
}
void Hoge(Executor execCommand){
foreach(Element elem in elementList){
execCommand(elem);
}
}
ポイントはdelegateの指す内容がElementもしくはその派生クラスのインスタンスメソッドだということです。

>>772
実行するインスタンスはアトから注入したいんです。