2012-03-09 9 views
1

から継承する新しいクラスを定義する方法は、とにかくiveに似たような何かをするためにとにかくあります。デリゲート

特定の時点でデリゲートのリストを呼び出して追跡し、コードをきれいに保つために、デリゲートを何らかの並べ替えのリストで呼び出すようにしてください。

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経由(それが立ってすることが必要ではないが)実現することができます。