Comment injecter (attacher) des gestionnaires d'événements aux événements .net d'instances créés par le conteneur Unity IoC?Comment injecter des gestionnaires d'événements dans des événements avec Unity
Exemple: J'ai une classe qui signale les erreurs par un événement standard .net:
class CameraObserver
{
public event Action<Exception> UnhandledException;
[...]
}
J'ai une autre classe qui est reponsible pour gérer ces événements:
class CrashMonitor
{
public static void HandleException(Exception x)
{ ... }
}
Ce que je voudrais à faire est d'injecter automatiquement le gestionnaire de CrashMonitor à tous les cas d'un CameraObserver comme dans ce pseudo-code:
UnityContainer container = new UnityContainer();
container.RegisterInstance<Action<Exception>>(CrashMonitor.HandleException)
.RegisterType<CameraObserver>(new InjectionEvent(UnhandledException));
var observer = container.Resolve<CameraObserver>();
// CrashMonitor.HandleException is now attached to observer.UnhandledException
Existe-t-il un moyen de faire cela avec Unity? Je peux penser à une solution de contournement laide comme dérivant de CameraObserver avec un constructeur spécial intendend pour l'injection de dépendance ou une injection de méthode. Mais cela rendrait le système plus complexe (parce que vous devez écrire du code). Je m'attendais naïvement que vous pourriez ajouter un attribut [Dependency] sur l'événement et tout devrait fonctionner.
Hey, Christian, avez-vous déjà trouvé quelque chose de plus à ce sujet, ou avez-vous conservé votre design personnalisé original? J'essaie d'utiliser Unity avec un design MVVM "pur", qui avait à l'origine un CloseCommand hérité d'un ViewModel de base, où j'ai passé un délégué dans un EventHandler personnalisé. J'ai travaillé très bien jusqu'à ce que j'essaie d'utiliser Unity pour tout injecter, et ensuite il s'est brisé rapidement. Si vous avez une solution qui pourrait me faire du bien, j'apprécierais beaucoup de sagesse. Merci! –