Obtener información de la Unidad interceptado método (Unidad de interceptación, IMethodReturn)

StackOverflow https://stackoverflow.com/questions/4157292

Pregunta

Estoy usando intercepción unidad para auditar una llamada al método. Todo funciona bien: el método es interceptada y puedo obtener el nombre del método y otro piensa. También quiero obtener el resultado de mi método. Por ejemplo, si mi método devuelve un objeto de lista que sólo soy capaz de acceder al IMethodReturn.ReturnValue, cuyo tipo es un objeto. En mi caso, el tipo subyacente del resultado es la lista para que pueda convertir el objeto de retorno IMethodReturn.ReturnValue como este. (Lista) IMethodReturn.ReturnValue Problema: Tengo que hacer este trabajo cuando no sé el tipo de retorno del método interceptada. Es decir, la ejecución del método interceptada a veces puede devolver un tipo de cuerda, otra Lista A, distinta de una lista y así sucesivamente. Las posibilidades son enormes. Necesito, si es posible, una manera de convertir el IMethodReturn.ReturnValue al tipo subyacente del valor de retorno del método interceptada. El objetivo final es transformar el resultado del método de XML y para guardar los datos en una base de datos. Para los propósitos de auditoría.

Este es el código (lo siento por el formato ...)

/// método Invoke pública IMethodReturn Invoke (entrada IMethodInvocation, GetNextHandlerDelegate getNext) { IMethodReturn resultData = getNext () (entrada, getNext); // inyección después de la ejecución del método. this.InjectionCall (entrada, resultData);
volver resultData; }

// Aquí está el problema ... InjectionCall private void (entrada IMethodInvocation, resultado IMethodReturn) { cadena 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);

}

Gracias.

¿Fue útil?

Solución

El problema real era la transformación del objeto devuelto por el método interceptada más que un problema de sí mismo intercepción. Lo resuelto por la serialización del objeto a XML. La solución que he encontrado es en este enlace:

Serialize objeto a XmlDocument

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top