Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# “我能/应该吗?”;“分享”;通过使其同时绑定静态和实例来创建事件?_C#_Events_Event Handling - Fatal编程技术网

C# “我能/应该吗?”;“分享”;通过使其同时绑定静态和实例来创建事件?

C# “我能/应该吗?”;“分享”;通过使其同时绑定静态和实例来创建事件?,c#,events,event-handling,C#,Events,Event Handling,我有一个“管道”系统。有一种类型:Pipeline,它可以实例化,然后在各种数据上执行 var myPipeline = new Pipeline(); myPipeline.Execute("something"); var myOtherPipeline = new Pipeline(); myOtherPipeline.Execute("something else"); 我想添加一个OnExecuted事件,它将在执行管道时引发。但我想将其添加到管道类型中,并添加到管道的单独实例化中

我有一个“管道”系统。有一种类型:
Pipeline
,它可以实例化,然后在各种数据上执行

var myPipeline = new Pipeline();
myPipeline.Execute("something");

var myOtherPipeline = new Pipeline();
myOtherPipeline.Execute("something else");
我想添加一个
OnExecuted
事件,它将在执行管道时引发。但我想将其添加到管道类型中,并添加到管道的单独实例化中。因此,作为静态事件和实例事件

  • 静态事件:在管道的任何实例化中执行任何管道时运行
  • 实例事件:在执行管道的特定实例化时运行
这里有最佳实践吗?我是否只需要添加两个事件

  • myPipeline.OnPipelineExecuted
    myOtherPipeline.OnPipelineExecuted
  • Pipeline.OnAnyPipelineExecuted
    (?这个名字听起来很可怕)
或者我可以重复使用同一事件吗?如果是,我应该这样做吗

更新:


请参见第一条和第二条评论。这不是一个好主意。为了避免额外的几行实现代码,可能需要一些架构技巧。

为什么需要静态事件?严格地说,你不能重复使用这个事件,你需要两个事件……我在想……我想你是对的。我的意思是,如果在整个代码中有十几个管道实例,那么静态事件肯定比将同一个处理程序绑定到每个管道更方便……但也不是那么方便。见鬼,我可以为它编写一个工厂方法,每次生成相同的预定义管道。