2013-04-16 38 views
8

Tôi có hai phương pháp như thế này:C cú pháp # Action

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

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

tôi muốn trích xuất các Write()Clear() phương pháp để một phương pháp mới (Action) để có một cái gì đó như thế này:

public ASpecificWork() 
{ 
    // do A work 
} 

public BSpecificWork() 
{ 
    // do B work 
} 

Execute(BSpecificWork); 
Execute(ASpecificWork); 

Các Write()Clear() sẽ được xác định trong Execute() chỉ một lần. Cú pháp đúng để làm như vậy là gì?

Trả lời

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

+1 mặc dù tôi muốn cho phép A và B triển khai giao diện. –

+1

@ C.Evenhuis - Chúng là các phương pháp, không phải loại, nhưng có, nếu chúng thuộc các loại khác nhau, đó sẽ là cách tiếp cận OOP tốt hơn. – Oded

3

này nên làm như lừa:

public ASpecificWork() 
{ 
    // do A work 
} 

public BSpecificWork() 
{ 
    // do B work 
} 

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

Execute(BSpecificWork); 
Execute(ASpecificWork); 
3

Execute nên mất Action thông số và nên chứa Write(), action(), Clear() phương pháp.

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