Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.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中其他类库的Raise事件#_C# - Fatal编程技术网

C# c中其他类库的Raise事件#

C# c中其他类库的Raise事件#,c#,C#,我有两个类库,A和B。A有B的引用。所以我可以调用B的任何函数。但现在需要的是,我想从B中引发A的事件(或函数;实际上只是想发送一点信息)。由于循环依赖性,我无法添加引用。有没有办法做到这一点 请给我代码样本;如何登记及致电 感谢在B类中定义事件(您可以使用其中一个代表进行事件): 考虑阅读,虽然它将与操作一起工作,但(按照惯例)最好使用EventHandler,其中SomeEventArgs继承自EventArgs。另外,当您使用WinForms(或其他使用事件处理程序的基础设施)但使用简单的

我有两个类库,A和B。A有B的引用。所以我可以调用B的任何函数。但现在需要的是,我想从B中引发A的事件(或函数;实际上只是想发送一点信息)。由于循环依赖性,我无法添加引用。有没有办法做到这一点

请给我代码样本;如何登记及致电 感谢在B类中定义事件(您可以使用其中一个代表进行事件):


考虑阅读

,虽然它将与
操作一起工作
,但(按照惯例)最好使用
EventHandler
,其中
SomeEventArgs
继承自
EventArgs
。另外,当您使用WinForms(或其他使用事件处理程序的基础设施)但使用简单的域类时,最好不要在出现的某个对象上使用
Something
@Jefferson,而应该使用
Something
。如果我不需要将发送者传递给订阅者,那么我不会添加此功能。同时传递
EventArgs.Empty
也很奇怪。我总是努力跟随雅格尼principle@JeffRSon我确实知道OnSomethinghapped,它应该受到虚拟保护,但对于没有继承的简单情况,它不是必需的
public class B
{
    public event Action<int> SomethingHappened; // define event

    private void Something()
    {
        if (SomethingHappened != null) // check if somebody subscribed
            SomethingHappened(42); // raise event and pass data
    }
}
public class A
{
   private B _b;

   public A(B b)
   {
      _b = b;
      _b.SomethingHappened += SomethingHappenedWithB; // subscribe
   }

   private void SomethingHappenedWithB(int data)
   {
       // handle event, use data
   }
}