TECHNOLOGIES
FORUMS
JOBS
BOOKS
EVENTS
INTERVIEWS
Live
MORE
LEARN
Training
CAREER
MEMBERS
VIDEOS
NEWS
BLOGS
Sign Up
Login
No unread comment.
View All Comments
No unread message.
View All Messages
No unread notification.
View All Notifications
Answers
Post
An Article
A Blog
A News
A Video
An EBook
An Interview Question
Ask Question
Forums
Monthly Leaders
Forum guidelines
Isidro Padilla
1.4k
319
19.6k
Error CS0079 relative to delegates and events
Jan 12 2018 3:59 AM
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.
Reply
Answers (
4
)
How to append a decimal and string value in Linq?
Encoding issue while generating PDF with help of NRECO