Оба этих класса содержат еще один закрытый класс, который вызывает события. Эти два класса затем повторно вызывают эти события для клиентов.
К сожалению, каждый из двух классов имеет такой же код:
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' может появляться только в левой части + = или - = (кроме случаев использования внутри типа)
Кто-нибудь знает, как избавиться от этого дубликата кода?