Domanda

sto usando l'unità di intercettazione per controllare una chiamata di metodo. Tutto funziona bene: il metodo è stato intercettato e posso ottenere il nome del metodo e l'altro pensa. Voglio anche per ottenere il risultato del mio metodo. Ad esempio, se il mio metodo restituisce un oggetto List Sono solo in grado di accedere al IMethodReturn.ReturnValue, il cui tipo è un oggetto. Nel mio caso, il tipo di fondo del risultato è List in modo da poter lanciare l'oggetto di ritorno IMethodReturn.ReturnValue come questo. (List) IMethodReturn.ReturnValue Problema: Devo fare questo lavoro, quando non so il tipo di ritorno del metodo intercettati. Cioè, l'esecuzione del metodo intercettata talvolta può restituire un tipo di stringa, Lista di un, altro un elenco e così via. I posibilities sono enormi. Ho bisogno, se possibile, un modo per convertire l'IMethodReturn.ReturnValue al tipo sottostante del valore di ritorno del metodo intercettata. L'obiettivo finale è quello di trasformare il risultato metodo per xml e per salvare i dati in un database. Per scopi di controllo.

Ecco il codice (mi dispiace per il formato ...)

/// metodo Invoke pubblico IMethodReturn Invoke (ingresso IMethodInvocation, GetNextHandlerDelegate getNext) {     IMethodReturn resultData = getNext () (ingresso, getNext);     // iniezione dopo l'esecuzione del metodo.     this.InjectionCall (ingresso, resultData);
    tornare resultData; }

// Qui è il problema ... InjectionCall private void (ingresso IMethodInvocation, risultato IMethodReturn) {     stringa methodName = 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);

}

Grazie.

È stato utile?

Soluzione

Il vero problema era la trasformazione dall'oggetto restituito dal metodo intercettata più di un problema di intercettazione stessa. Ho risolto serializzazione l'oggetto in XML. La soluzione che ho trovato è in questo link:

Serializzare oggetto XmlDocument

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top