Ben bu yazı ama başkası bu parçacığı genelinde gelirse için Dustin Campbell cevabı açıklamak için koduyla yorumunu ekleyerek düşüncesi sonra yaşları olduğunu biliyoruz. En iyi uygulamaların hangisi olacağına karar vermeye çalışırken bu yazıya rastladım ve cevapla kastedilen şey buydu.
etkinliğinizin temsilci oluştururken
public class myCustomeEventArgs:EventArgs
{
public bool DoOverride { get; set; }
public string Variable1 { get; private set; }
public string Variable2{ get; private set; }
public myCustomeEventArgs(string variable1 , string variable2)
{
DoOverride = false;
Variable1 = variable1 ;
Variables = variable2 ;
}
}
Yani bunun gibi yaratılan olay args kullanmak kendi özel olay işleyicisi sınıf oluşturun.
public delegate void myCustomeEventHandler(object sender, myCustomeEventArgs e);
Etkinliği yükselttiğiniz sınıfta da olayı bildirirsiniz.
public event myCustomeEventHandler myCustomeEvent;
Yani sınıfta olay olayını dinler sınıf tetiklemek zaman yapabilirsiniz sadece belirlenen olayın gövdesinde e.DoOverride = true; olayı ateşleyen sınıfta beyan edileceği gibi.örneğin
Yangın olay: Olay bir değer döndürür ve orada birden işleyicileri olan olayı kayıtlı
if(myCustomeEvent != null)
{
var eventArgs = new myCustomeEventArgs("Some Variable", "Another Varaible");
myCustomeEvent(this, eventArgs);
//Here you can now with the return of the event work with the event args
if(eventArgs.DoOverride)
{
//Do Something
}
}
Lütfen, 'event' bölümüne iletilen bir dizi özel EventArgs üzerinde yazılabilir bir özellik içerecek şekilde detaylandırır mısınız? – Odys
@Odys EventArgument nesnesini özel yapın. Sonuçların yaşadığı bir özellik oluşturun. – Crisfole