2010-11-11 2 views
0

Я использую единичный перехват для аудита вызова метода. Все работает нормально: метод перехвачен, и я могу получить имя метода и другие мысли. Я также хочу получить результат моего метода. Например, если мой метод возвращает объект 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); 

}

Спасибо.

ответ

1

Реальной проблемой было преобразование из объекта, возвращенного перехваченным методом, больше, чем проблема самого перехвата. Я решил это, сериализуя объект в Xml. Решение, которое я нашел, находится по этой ссылке:

Serialize object to XmlDocument