2013-04-16 6 views
8

私はこのような二つの方法があります:C#アクション構文

public void ExecuteA() 
{ 
    Write(); 
    // A specific work 
    Clear(); 
} 

public void ExecuteB() 
{ 
    Write(); 
    // B specific work 
    Clear(); 
} 

私はこのような何かを持っている新しいメソッド(アクション)へWrite()Clear()メソッドを抽出したい:

public ASpecificWork() 
{ 
    // do A work 
} 

public BSpecificWork() 
{ 
    // do B work 
} 

Execute(BSpecificWork); 
Execute(ASpecificWork); 

Write()およびClear()は、Execute()に1回だけ定義されます。 正しい構文は何ですか?

答えて

21
public void Execute(Action action) 
{ 
    Write(); 
    action(); 
    Clear(); 
} 
+0

+1私はAとBにインターフェイスを実装させたいと思いますが。 –

+1

@ C.Evenhuis - メソッドであり型ではありませんが、異なる型であればより良いOOPアプローチになります。 – Oded

3

これはトリック実行する必要があります。

public ASpecificWork() 
{ 
    // do A work 
} 

public BSpecificWork() 
{ 
    // do B work 
} 

public void Execute(Action action) 
{ 
    Write(); 
    action(); 
    Clear(); 
} 

Execute(BSpecificWork); 
Execute(ASpecificWork); 
3

ExecuteActionパラメータを取りすべきであるとWrite()action()Clear()メソッドが含まれている必要があります。

public void Execute(Action action) 
{ 
    Write(); 
    action(); 
    Clear(); 
}