4
Answers

Error CS0079 relative to delegates and events

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. 

Answers (4)

2
Photo of Nilesh Shah
NA 22.3k 215.1k 7y
please note the medium of communication on this site is English
1
Photo of Nilesh Shah
NA 22.3k 215.1k 7y
how are you calling that event?
 
you can't directly creat an object of that like a class
 
refer here for more:
https://docs.microsoft.com/en-us/dotnet/csharp/misc/cs0079 
0
Photo of Isidro Padilla
NA 65 15.3k 7y
Hi, nobody know how to avoid this error?
0
Photo of Isidro Padilla
NA 65 15.3k 7y
Translatation to English:
Error CS0079: event 'AssemblyUnloaded'
it can only appear to the left of + = or - =
Code:
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);
}
}
When I try to compile this decompilation, it throws the error CS0079.
Please can you help me to solve this error.