Je restructure le code Opur pour utiliser des génériques. Nous utilisons (par nécessité, aucun changement possible ici) propre code pour attacher/détacher/itérer/appels délégués. Avant il y avait les classes X, Y, Z qui a déclaré leur propre:Est-il possible d'alias/référencer un délégué d'un délégué?
public delegate void Event_x_Delegate(ref ComParam pVal, out bool result);
A ce moment, je passe ce délégué à la classe générique:
public sealed class Event_X_Handling : BasicEvent<Event_X_Handling.Event_x_Delegate>
avec le BasicEvent beeing
public abstract class BasicEvent<DELEGATE> : Loggable
where DELEGATE: class { ...
Cela fonctionne très bien, j'ai donc généralisé la fonctionnalité attach/detach.
Mais maintenant, je voudrais généraliser l'itération/appel aussi. Comme X, Y, Z ne diffèrent que par quelque chose "ref ComParam pVal" comme cela fonctionne bien:
public abstract class BasicEventListener<EVENTPARAM1> :
BasicEvent<BasicEventListener<EVENTPARAM1>.BasicDelegate<EVENTPARAM1>> {
#region TYPES
public delegate void BasicDelegate<PARAM1>(ref EVENTPARAM1 pVal, out bool result);
#endregion
avec X, Y, Z changeant:
public sealed class Event_X_Handling : BasicEventListener<ComParam>
Mais voilà le problème qui se cache autour du coin: attach/detach maintenant travailler avec un BasicEventListener.BasicDelegate. Mais beaucoup de code. fait référence à Event_X_Handling.Event_x_Delegate, car ils utilisaient malheureusement la syntaxe NET1.1 pour créer des délégués (en entrant Event + = new Delegate_X (_listen)).
Donc en bref: est-il un moyen d'un alias un Event_x_Delegate à un BasicDelegate? Je ne peux pas vraiment voir d'autres possibilités. PS: Bien sûr, je vois que, en cassant les classes de base à l'invocation dynamique dans l'itération/appel je pourrais l'implémenter sans introduire le BasicDelegate. Mais ce n'est pas très élégant à mon humble avis.