4
Reply

Error CS0079 relative to delegates and events

Isidro Padilla

Isidro Padilla

Jan 12 2018 3:59 AM
169
A ver si me pueden ayudar porque aunque he buscado informaión y
 
se que el error está relacionado con la forma de la utilización
 
de delegados, estoy aprendiendo y mi nivel da para más.
 
El error que me lanza es este:
 
Error CS0079: El evento 'AssemblyManager.AssemblyUnloaded'
solo puede aparecer a la izquierda de += o -=.
¿Cuál es el cambio que debo hacer para que "AssemblyUnloaded"
 
no me arroje este error?
 
Código:
 
public event EventHandler<AssemblyEventArgs> AssemblyUnloaded
{
[MethodImpl(MethodImplOptions.Synchronized)]
add
{
AssemblyUnloaded += (EventHandler<AssemblyEventArgs>)Delegate.Combine(AssemblyUnloaded, value);
}
[MethodImpl(MethodImplOptions.Synchronized)]
remove
{
AssemblyUnloaded -= (EventHandler<AssemblyEventArgs>)Delegate.Remove( AssemblyUnloaded, value);
}
}
 
He encontrado ejemplos de solución como este que añado a continuación, pero no se aplicarlo al este caso concreeto.
 
Error CS0079
 
Su edición muestra una llamada recursiva: está declarando un evento personalizado, lo que significa que debe proporcionar un campo de respaldo; por ejemplo:
 
private EventHandler customEvent;
evento público estático EventHandler CustomEvent
{
agregar {customEvent + = valor; }
eliminar {customEvent - = valor; }
}
vacío estático privado Func ()
{
var tmp = customEvent;
if (tmp! = null) tmp (null, null);
}
 
Tenga en cuenta que en Func me refiero al campo (customEvent), no al evento (CustomEvent).
 
Sin embargo, esto es más simple, son mejores (thread-safe) como un evento de tipo campo:
 
evento estático público EventHandler CustomEvent;
 
vacío estático privado Func ()
{
var tmp = CustomEvent;
if (tmp! = null) tmp (null, null);
}
 
Un evento de tipo campo utiliza la palabra clave de evento, pero omite los accesos: el compilador agrega una gran cantidad de texto repetitivo para usted (un campo de respaldo y implementaciones de agregar / quitar hilos seguros). Además, permite el acceso al respaldo archivado a través del nombre del evento (del tipo declarante), de ahí que la línea var tmp = CustomEvent funciona.
 
Además: tenga mucho cuidado con los eventos estáticos; son una excelente manera de mantener accidentalmente muchos objetos vivos.
 
Les estaré muy agradecido por la ayuda que me puedan prestar. 

Upload Source Code  Select only zip and rar file.
Answers (4)