Hepimiz C# olayı beyanı olan dehşete aşinayız. parçacığı güvenliği, the standard is to write something like this sağlamak için: C# olaylarını bir uzatma yöntemiyle yükseltmek - bu kötü mü?
public event EventHandler SomethingHappened;
protected virtual void OnSomethingHappened(EventArgs e)
{
var handler = SomethingHappened;
if (handler != null)
handler(this, e);
}
Son zamanlarda bu tahta (şimdi bulamıyorum olan) bazı diğer söz konusu, birisi yöntemleri bu senaryoda güzel kullanılabileceği uzantıyı dikkat çekti.
public event EventHandler SomethingHappened;
void SomeMethod()
{
this.SomethingHappened.RaiseEvent(this, EventArgs.Empty);
}
Sorum: yerde bu uzatma yöntemleri sayesinde
static public class EventExtensions
{
static public void RaiseEvent(this EventHandler @event, object sender, EventArgs e)
{
var handler = @event;
if (handler != null)
handler(sender, e);
}
static public void RaiseEvent<T>(this EventHandler<T> @event, object sender, T e)
where T : EventArgs
{
var handler = @event;
if (handler != null)
handler(sender, e);
}
}
bildirmek ve bir olayı yükseltmek için gereken tüm böyle bir şeydir,: İşte bunu yapmak için bir yolu bu iyi bir fikir mi ? Standart On yöntemine sahip olmayla hiçbir şey eksik miyiz? (Fark ettiğim bir şey, açık kod ekleme/çıkarma işlemi olan olaylarla çalışmadığıdır.)
Belki de şu soruyu düşünüyordunuz: http://stackoverflow.com/questions/192980/boiler-plate-code-replacement-is-there-anything-bad-about-this-code – Benjol