Я использую единичный перехват для аудита вызова метода. Все работает нормально: метод перехвачен, и я могу получить имя метода и другие мысли. Я также хочу получить результат моего метода. Например, если мой метод возвращает объект List, я могу получить доступ к IMethodReturn.ReturnValue, тип которого является объектом. В моем случае основным типом результата является List, поэтому я могу использовать возвращаемый объект IMethodReturn.ReturnValue следующим образом. (Список) IMethodReturn.ReturnValue Задача: Мне нужно выполнить эту работу, когда я не знаю тип возвращаемого метода перехвата. То есть, выполнение перехваченного метода иногда может возвращать тип строки, другой список, другой список и т. Д. Возможности огромны. Мне нужно, если это возможно, способ конвертировать IMethodReturn.ReturnValue в базовый тип возвращаемого значения метода перехвата. Конечной целью является преобразование результата метода в xml и сохранение данных в базе данных. Для целей аудита.Получить информацию о методе перехвата Unity (Unity Interception, IMethodReturn)
Вот код (извините за формат ...)
/// Invoke метод общественного IMethodReturn Invoke (IMethodInvocation вход, GetNextHandlerDelegate GetNext) { IMethodReturn resultData = GetNext() (вход, GetNext) ; // Инъекция после выполнения метода. this.InjectionCall (input, resultData);
return resultData; }
// Здесь проблема ... частная пустота InjectionCall (вход IMethodInvocation, IMethodReturn результат) { строка имяМетода = 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);
}
Спасибо.