Tüm .NET kitabında, olayları uygulamak için kılavuz çizgisini okudum, EventArgs
sınıfını alt sınıflara ayırmanız ve EventHandler'ı kullanmanız gerektiğini açıklıyor. http://msdn.microsoft.com/en-us/library/ms229011.aspx ile ilgili daha fazla bilgi araştırdım ve "Olay işleyicileri olarak kullanılmak üzere el ile yeni delegeler oluşturmak yerine System.EventHandler kullan" diyor. EventArgs'ı kullanmanın önemli nedenleri olduğunu anlıyorum, ancak sorum "Bu şekilde yapmalı mıyım?" Değil, "Bunu böyle yapabilir miyim?".EventArgs sınıfı ve etkinlik anahtar kelimesi arasında özel bir ilişki var mı?
Etkinliklerim ile EventHandler
yerine genel bir temsilci kullanamamın bir nedeni var mı? Örneğin, güçlü bir şekilde yazılan bir gönderen varsa (bu kişi object sender
tarafından rahatsız mı geliyor?).
Neyi daha iyi ifade ettiğimi açıklamak için, aşağıdakiler işe yaramayacak herhangi bir sebep var mı?
public class IoC
{
public AbstractFactory GetAbstractFactory()
{
var factory = new AbstractFactory();
factory.CreateObject +=()=>new object();
return factory;
}
}
public class AbstractFactory
{
public event Func<object> CreateObject;
private object OnObjectCreated()
{
if(CreateObject == null)
{
throw new Exception("Not injected.");
}
return CreateObject();
}
private object _injectedObject;
public object InjectedObject
{
get
{
if(_injectedObject == null)
{
_injectedObject = OnObjectCreated();
}
return _injectedObject;
}
}
}
Gözlemlenebilir bir koleksiyona benzer bir şeyi uygulamak için bunu tam olarak yaptım. – asawyer
İlgili konu: http://stackoverflow.com/questions/4828212/should-eventhandler-always-be-used-for-events/4828233 – CodesInChaos