Получить информацию о перехваченном методе Unity (перехват Unity, Imethodruturn)
-
08-10-2019 - |
Вопрос
Я использую перехват Unity для аудита вызова метода. Все работает нормально: метод перехвачен, и я могу получить имя метода и другие думает. Я также хочу получить результат моего метода. Например, если мой метод возвращает объект списка, я могу получить доступ только к ImethodurnUnturnuge.returnvalue, тип которого является объектом. В моем случае базовый тип результата является списком, поэтому я могу бросить Imethodurnunt. Возвращение возвращаемого объекта. (Список) Imethodurnurn.returnvalue Проблема: я должен сделать эту работу, когда я не знаю возвращаемый тип перехваченного метода. То есть выполнение перехваченного метода иногда может вернуть тип строки другого списка, другой список и т. Д. Возможности огромны. Если это возможно, если это возможно, способ преобразовать Imethodurnurnuge.returnvalue к базовому типу возвращаемого значения перехваченного метода. Окончательная цель - преобразовать результат метода к XML и сохранить данные в базе данных. Для аудиторских целей.
Вот код (извините за формат ...)
/// Создает метод публичного ImethodrutnНунзы (Imethodinvocation ввод, getnexthandlerdelegate getnext) {imethoduturn resultdatata = getnext () (вход, getnext); // Инъекция после выполнения метода. Это. INJECINCECALL (вход, результат данных);
Возврат результатовData; }
// Вот проблема ... Частный пустотный инъекционный впрыск (Imethodinvocation вход, Imethodreturn Result) {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);
}
Спасибо.
Решение
Настоящая проблема была преобразование от объекта, возвращаемого перехваченным методом, более чем проблемой самого перехвата. Я решил его путем сериализации объекта к XML. Решение, которое я нашел, в этой связи: