using System;
namespace Developpez.Dotnet.Diagnostics
{
///
/// Classe d'extension afin de fournir aux objets de type la possibilité
/// d'être englobés dans des proxy afin de fournir des outils de diagnostique pour mesurer le nombre et
/// la durée des appels des différents objets
///
public static class MethodCallMonitorExtensions
{
///
/// Renvoie un proxy pour l'objet passé en paramètre, auquel on peut attacher des évènements grâce à wrappedEvents
///
/// Le type d'objet pour lequel créer un proxy
/// L'objet pour lequel créer un proxy
/// Paramètre de sortie qui reçoit l'objet qui va permettre d'intercepter les appels aux méthodes de la fonction via des évènements
/// L'objet wrappé auquel sera associé les différents évènements attachés grâce à wrappedEvents
public static T WrapForCallMonitor(this T obj, out MethodCallMonitor wrappedEvents) where T : MarshalByRefObject
{
return MethodCallMonitor.Create((T)obj, out wrappedEvents);
}
}
}