Solo puede usar los operadores +=
o -+
en un evento fuera de su clase de propietario.
public class Data
{
public event EventHandler OnSave = (s,e) =>
{
//do something important!
};
public void Save()
{
OnSave(this,null);
//do save
}
}
//outside the class
Data data = new Data { OnSave = null }; //compile error
data.OnSave = SomeMethodElse; //compile error
data.OnSave += MyCustomActionsOnSave; //ok
data.Save();
No se puede eliminar la acción OnSave
definida en la clase. Solo puede agregar/eliminar sus propias acciones OnSave
fuera de la clase. Si elimina la palabra clave event
, el OnSave
ya no será un evento, sino un delegado común. Entonces puede hacer cualquier cosa, incluso asignar valor fuera de la clase.
Parece que esta característica va a ser añadido en la próxima versión de idioma http://roslyn.codeplex.com/wikipage?title=Language+Feature+Status – Zarat
Si usted todavía está interesado, por favor mire mi sugerencia aquí: http://stackoverflow.com/questions/24951619/add-event-handler-during-object-initialization/37994490#37994490 –