Получить информацию о перехваченном методе Unity (перехват Unity, Imethodruturn)

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

Вопрос

Я использую перехват 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. Решение, которое я нашел, в этой связи:

Сериализация объекта к XMLDocument

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top