Bu sınıfların her ikisi de olayları yükselten başka bir özel sınıf içerir. Bu iki sınıf daha sonra bu olayları istemcilere yeniden yükseltiyor. Gördüğünüz gibiAynı, yinelenen etkinliklerle iki sınıfı nasıl yeniden düzenlersiniz?
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);
}
}
}
, özel bir nesneden yeniden yükseltmek olaylar vardır:
Maalesef iki sınıfın her bu kodun aynısını sahiptir. Bu gereksizdir. Ben devralma kullanarak ve bir taban sınıfta bu yinelenen kod yerleştirerek çalıştım ama böyle elde hataları tutmak:
olay 'BaseClass.Foo' Yalnızca + = veya sol tarafında görünebilir
- = (hariç tür içinde kullanılan)
Bu yinelenen koddan nasıl kurtulacağını bilen var mı?
iyi olur etkinliğin adı için OnEvent kullanmamayı tercih. OnEvent olayı yükseltmek/ateşlemek için standart isimdir. Else, cevabın fikrine katılıyorum. –
Düzeltmeniz için çok teşekkür ederim :) – Andrea
Andrea: Cevabınız için teşekkürler! Ne yazık ki bu kodun tam olarak ne olduğunu takip ederek biraz sorun yaşıyorum. "Ekle" ve "kaldır" anahtar kelimelerini hiç duymadım bile. Bu kodu biraz açıklayabilir misiniz? –