두 클래스 모두 이벤트를 발생시키는 다른 개인 클래스를 포함합니다. 이 두 클래스는 이러한 이벤트를 클라이언트에 다시 발생시킵니다. 당신이 볼 수 있듯이동일한 중복 이벤트가있는 두 클래스를 어떻게 리팩토링합니까?
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이 코드를 조금 설명해 주시겠습니까? –