如果我有一个封装了类 B 实例的类 A,是否可以通过类 A 的实例传递在类 B 中引发的事件?例如:
public classB
{
...
public event EventArgs SomeEvent;
protected virtual void OnSomeEvent(EventArgs e)
...
}
public classA
{
...
private classB = new ClassB();
...
}
我希望发生的是类 A 的任何实例也公开 SomeEvent,这样当它被类 B 引发时它也被类 A 引发?
有人可以提供帮助或建议吗?
最佳答案
没有什么比routed events对于简单的类。您应该订阅 ClassB 事件并在 ClassB 引发事件时从 ClassA 引发事件:
public class ClassA
{
public event EventHandler SomeEvent = (s,e) => { };
private ClassB classB = new ClassB();
public ClassA()
{
classB.SomeEvent += (s,e) => SomeEvent(this, e);
}
}
更经典的方式:
public ClassA
{
public event EventHandler SomeEvent;
private ClassB classB = new ClassB();
public ClassA()
{
classB.SomeEvent += ClassB_SomeEvent;
}
private void ClassB_SomeEvent(object sender, EventArgs e)
{
if (SomeEvent != null)
SomeEvent(this, e);
}
}
关于c# - 从封装类传递事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20880851/