//Le runtime .NET interroge l'attribut pour savoir si le contexte courant est valide. //Si cette fonction renvoi false, le runtime créé un nouveau contexte et appelle GetPropertiesForNewContext() // pour vérifier si le context est valid, on vérifie la présence (et la validité si besoin) d'une propriété public override bool IsContextOK(Context ctx, IConstructionCallMessage ctorMsg) { //le return false permet de forcer systématiquement un nouveau contexte pour chaqueinstance // utilise si une instance d'un type créé des instance de ce meme type : vous pouvez intercepter // les appels entre instance d'un meme type ( car il y aura changement de contexte ) //return false; InterceptionAppelProperty prop = ctx.GetProperty("InterceptionAppelProperty") as InterceptionAppelProperty; if (prop != null) // on a une propriété appelé InterceptionAppelProperty dans le contexte ? { return(true); // Oui -> on accepte le contexte } return(false); // Non -> on refuse le contexte }
// Permet d'ajouter des propriétés dans un nouveau contexte // ( Une propriété est un peu l'équivalent des shared properties utilisable avec COM+ dans ComponentServices ) public override void GetPropertiesForNewContext(IConstructionCallMessage ctor) { InterceptionAppelProperty intercepProp = new InterceptionAppelProperty(); ctor.ContextProperties.Add(intercepProp); }