如何定义从Delegate继承的新类

时间:2012-03-09 11:07:02

标签: c# inheritance delegates

无论如何都要做类似于我所得到的事情。

我想要做的是在特定时间点调用委托列表并跟踪它们,并且为了保持代码清洁,请在某种列表中调用委托。< / p>

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});
    }
}

1 个答案:

答案 0 :(得分:3)

你不需要需要代表列表......你在c#中创建的任何委托都将是多播的,所以你需要的只是任何委托,并且您可以将它们与+结合使用。只需调用它,即可达到所有目标。例如:

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

这个可以(虽然它没有必要站起来)通过event实现,这将使调用者的约定非常明显。