我正在使用一個在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