這兩個類都包含引發事件的另一個私有類。然後這兩個班級將這些事件重新提交給客戶。你如何用相同的重複事件重構兩個類?
不幸的是,兩個類都有此完全相同的代碼:
public class FirstClass
{
public delegate void FooEventHandler(string foo);
public delegate void BarEventHandler(string bar);
public delegate void BazEventHandler(string baz);
public event FooEventHandler Foo;
public event BarEventHandler Bar;
public event BazEventHandler Baz;
private PrivateObject privateObject;
public FirstClass()
{
privateObject.Foo += FirstClass_Foo;
privateObject.Bar += FirstClass_Bar;
privateObject.Baz += FirstClass_Baz;
}
private void FirstClass_Foo(string foo)
{
if (Foo != null)
{
Foo(foo);
}
}
private void FirstClass_Bar(string bar)
{
if (Bar != null)
{
Bar(bar);
}
}
private void FirstClass_Baz(string baz)
{
if (Baz != null)
{
Baz(baz);
}
}
}
正如你所看到的,我不得不從私人對象重新引發事件。這是多餘的。我嘗試使用繼承,並將此重複的代碼放在基類中,但我不斷收到類似的錯誤:
事件'BaseClass.Foo'只能出現在+ =或 - =的左側從內部使用)
有誰知道如何擺脫這個重複的代碼?
你最好不要使用的OnEvent爲您的活動的名稱。 OnEvent是提升/解散事件方法的標準名稱。否則,我同意你的迴應。 –
非常感謝您的更正:) – Andrea
Andrea:感謝您的回覆!不幸的是,我正在按照這個代碼所做的事情來處理一些問題。我從來沒有聽說過'add'和'remove'關鍵字o_O你能解釋一下這個代碼嗎? –