Ambas clases contienen otra clase privada que genera eventos. Estas dos clases luego vuelven a plantear estos eventos a los clientes.¿Cómo se refactorizan dos clases con los mismos eventos duplicados?
Por desgracia, cada una de las dos clases tiene este exactamente el mismo código:
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);
}
}
}
Como se puede ver, tengo que volver a subir los eventos de un objeto privado. Es redundante He intentado utilizar la herencia y la colocación de este código duplicado en una clase base, pero sigo recibiendo errores como:
El evento 'BaseClass.Foo' sólo puede aparecer en el lado izquierdo de + = o - = (excepto cuando utilizado desde dentro del tipo)
¿Alguien sabe cómo deshacerse de este código duplicado?
es mejor que no usar OnEvent para el nombre de su evento. OnEvent es el nombre estándar para subir/disparar el evento del método. De lo contrario, estoy de acuerdo con la idea de tu respuesta. –
muchas gracias por su corrección :) – Andrea
Andrea: ¡Gracias por la respuesta! Lamentablemente, estoy teniendo problemas para seguir exactamente lo que hace este código. Nunca he oído hablar de las palabras clave 'add' y' remove' o_O ¿Podría explicar este código un poco? –