2012-03-09 40 views
1

的新類有無論如何做類似於什麼樣的波紋管。如何定義一個繼承自代表

我試圖做的是在特定的時間點調用委託列表並跟蹤它們,爲了保持代碼清潔,請將委託調用在某種列表中。

public interface IServiceStatusDelegate 
{ 
    object DynamicInvoke(object[] args) 
} 

public class ServiceStatusDelegate 
    : Delegate, IServiceStatusDelegate 
{ 
} 

public class MyServiceStatusCheckedDelegate 
    : ServiceStatusDelgate 
{ 
} 

public class MyServiceStatusChangedDelegate 
    : ServiceStatusDelgate 
{ 
} 
public class MyClass 
{ 
    public ServiceStatusDelgate[] listOfDelegatesToInvoke; 

    public void InvokeRequiredDelegates() 
    { 
     foreach(ServiceStatusDelegate delegateToInvoke in this.listOfDelegatesToInvoke) 
      delegateToInvoke.DynamicInvoke(new object[]{this, DateTime.Now}); 
    } 
} 

回答

3

你並不需要代表一個列表...在C#創建任何代表將是多播,因此,所有你需要的是任何代表,你可以將其與+結合。只要調用它並且所有目標都會達到。例如:

Action target = null; 
... 
target += Method1; 
... 
target += Method2; 
... 
if(target != null) target(); // calls Method1 and Method2 

可以(雖然沒有必要爲它站)可以通過一個event這將使該公約非常明顯主叫實施。