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