我正在使用一个在C#中转发事件的类。我想知道是否有办法做 它需要较少的代码开销。在C中转发事件#
下面是我到目前为止的一个例子。
class A
{
public event EventType EventA;
}
class B
{
A m_A = new A();
public event EventType EventB;
public B()
{
m_A.EventA += OnEventA;
}
public void OnEventA()
{
if(EventB)
{
EventB();
}
}
}
A级引发原始事件。 B类将其作为EventB(它本质上是相同的事件)转发。 A类对其他模块是隐藏的,因此它们不能直接订阅EventA。
我想要做的是减少类B中用于转发事件的代码开销,因为通常没有真正处理类B中的事件。另外,我将有几个不同的事件,因此它需要写入B类中的很多OnEvent()方法只用于转发事件。
是否有可能自动地以某种方式链接到EventA EventB,所以我有这样的事情:
class B
{
A m_A = new A();
public event EventType EventB;
public B()
{
m_A.EventA += EventB; // EventA automatically raises EventB.
}
}
我使用C#2.0编译器BTW。
大问题,特别是因为你不应该忘记从EventA退订,否则可能会发生内存泄漏(即使A不再需要,对象B仍会保留在内存中)。 – dbkk 2009-06-30 21:01:08