Question

J'utilise l'interception de l'unité pour auditer un appel de méthode. Tout fonctionne très bien: la méthode est interceptée et je peux obtenir le nom de la méthode et d'autres pense. Je veux aussi obtenir le résultat de ma méthode. Par exemple, si ma méthode retourne un objet de la liste, je ne suis en mesure d'accéder à la IMethodReturn.ReturnValue, dont le type est un objet. Dans mon cas, le type sous-jacent du résultat est la liste que je puisse jeter l'objet de retour IMethodReturn.ReturnValue comme celui-ci. (Liste) IMethodReturn.ReturnValue Problème: Je dois faire ce travail quand je ne connais pas le type de retour de la méthode interceptées. C'est, l'exécution de la méthode interceptées peut parfois renvoyer un type de chaîne, d'autres une liste, une liste d'autres et ainsi de suite. Les posibilités sont énormes. J'ai besoin, si possible, un moyen de convertir le IMethodReturn.ReturnValue du type sous-jacent de la valeur de retour de la méthode interceptées. L'objectif final est de transformer le résultat de la méthode XML et pour enregistrer les données dans une base de données. Aux fins de vérification.

Voici le code (désolé pour le format ...)

/// méthode Invoke IMethodReturn publique Invoke (entrée IMethodInvocation, GetNextHandlerDelegate getNext) {     IMethodReturn resultdata = getNext () (entrée, getNext);     // injection après l'exécution de la méthode.     this.InjectionCall (entrée, resultdata);
    retourner resultdata; }

// Voici le problème ... InjectionCall private void (entrée IMethodInvocation, résultat IMethodReturn) {     string nomMéthode = input.MethodBase.Name;

// How to get the 
//List<object> resultList = (List<object>)result.ReturnValue   ???
//Type type = resultData.ReturnValue.GetType()

// Calling the audit service. IocFactory is the container helper object.
//IAuditService srvAudit = IocFactory.Resolve<IAuditService>();
//srvAudit.RegisterData(methodName,null,null);

}

Merci.

Était-ce utile?

La solution

Le problème réel est la transformation de l'objet renvoyé par la méthode intercepté plus qu'un problème de l'interception lui-même. Je l'ai résolu par sérialisation l'objet Xml. La solution que j'ai trouvé est dans ce lien:

sérialiser l'objet à XmlDocument

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