在C#中,是否可以不使用helper方法将一个事件注册到另一个事件?

在C#中,是否可以不使用helper方法将一个事件注册到另一个事件?,c#,wpf,events,C#,Wpf,Events,我在不同的班级有两个相同的活动: A.eventA B.eventB 这两个事件:eventA和eventB是通过同一委托定义的,因此这些事件具有相同的返回值和参数。当B.eventB被触发时,有可能触发A.eventA吗 我可以写一个方法: void return-value-of-delegate connect(parameters of delegate) { if (A.eventA != null) { A.eventA(parameters of del

我在不同的班级有两个相同的活动:

A.eventA

B.eventB
这两个事件:eventA和eventB是通过同一委托定义的,因此这些事件具有相同的返回值和参数。当B.eventB被触发时,有可能触发A.eventA吗

我可以写一个方法:

void return-value-of-delegate connect(parameters of delegate)
{
   if (A.eventA != null)
   {
      A.eventA(parameters of delegate);
   }
}
我只是想知道我是否可以缩短我的代码

谢谢

(注意:我的代码是WPF项目,因此是WPF标记。)


编辑:在类A中是对类B的引用。

不,您不能,除非代码在声明事件的类中。只能从声明类触发事件。您可能必须使用两个类中的参数来使用事件,并反过来触发事件,但您不能保证它们将同时触发,仅在大约相同的时间触发,这取决于注册到每个事件的方法,因为它们将在同一线程中执行。

您不能在类之外引发事件。只有类本身才能引发自己的事件。另一方面,您可以公开一个公共方法,该方法接受内部引发指定事件的相同参数


使用
反射
也不是一个仅允许您订阅和删除另一类事件订阅的选项。

事件在不同类中定义的事实意味着它们不是相同的事件,即使它们可能具有相同的签名。不能同时从两个不同的类触发事件


除此之外,考虑事件通常是从类的实例中触发的。当发生

A.eventA
时,您会触发哪个
B.eventB
实例?

每当
eventB
触发时,
eventA
也会触发:

class A {
  private B b;
  public event EventHandler EventA {
    add {
      b.EventB += value;
    }
    remove {
      b.EventB -= value;
    }
  }
  public A() {
    b = new B();
  }
  // ...
}

现在所有的事件侦听器都注册在B类中。

我在A类中引用了B类。对不起,我忘了提到它。似乎这就是我要找的。它看起来比一种新方法方便得多!谢谢@丹·普泽伊:一个公正的观察。但如果是这样的话,取决于问题的具体情况,以及A和B之间的关系。这在现实中是非常有意义的。