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