Question

Je suis actuellement aux prises avec un problème qui me pose de nombreuses iterfaces et leurs implémentations, toutes créées avec l'unité. ces classes contiennent des méthodes qui jettent des exceptions sur une base régulière et je voulais créer un proxy dynamique autour de ces classes afin que je puisse récupérer toutes les exceptions survenues dans les méthodes, mais les gérer ailleurs.

Comme je joue avec Unity, je me demande si cela peut être fait avec Unity Interception.

i.e. créez un intercepteur TransparentProxy et enroulez un bloc try-catch autour de l'invocatino de ces méthodes. est-ce possible ou suis-je dans la mauvaise direction? merci

Était-ce utile?

La solution

Oui, l'interception d'unité (AOP) est un excellent moyen de gérer le traitement des exceptions. Vous pouvez ajouter toutes sortes de comportements tels que:

  • écrire dans un fichier journal ou dans le journal des événements
  • envoyer un email
  • incrémenter un compteur de performance
  • nouvelle tentative automatique à l'expiration du délai d'attente ou du verrouillage d'une exception
  • relancez une erreur différente

Votre gestionnaire d'appels ressemblera à quelque chose comme:

public override IMethodReturn Invoke(IMethodInvocation input, GetNextHandlerDelegate getNext)
{
    IMethodReturn result = getNext()(input, getNext);

    if (result.Exception != null)
    {
        // do something
    }

    return result;
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top