C # Отражение на текущий асинхронный метод - PullRequest
2 голосов
/ 25 сентября 2019

Я пытаюсь понять, что есть несколько прямой способ получить отраженные свойства выполняемого в настоящее время асинхронного метода.Я ищу те же свойства, которые были бы доступны, если бы я просто делал что-то подобное в обычном неасинхронном методе:

var method = (MethodInfo)MethodBase.GetCurrentMethod();

Но если я в асинхронном методе, яполучение метода MoveNext () из рефлексии при использовании вышеуказанного рефлексивного кода.

Нужно ли мне просто наращивать стек вызовов с помощью StackTrace или StackFrame?

Единственная проблема, с которой я сталкиваюсь, это то, что она несколько ручная.Этот код должен быть динамическим, так как моя реализация будет использоваться при ведении журнала, и он должен быть надежным и точным во многих приложениях.Он должен работать как с асинхронными, так и с синхронными методами / функциями.

В настоящее время я могу обнаружить только людей, использующих атрибут baked in .net CallermemberName, который получает правильное имя текущего выполняемого метода., но, очевидно, мне нужно больше, чем это.

Любая помощь будет принята с благодарностью.Спасибо!

1 Ответ

1 голос
/ 25 сентября 2019

Это зависит от того, какой регистратор вы собираетесь использовать, например, NLog уже имеет эту функцию, но, как упоминалось на их веб-сайте , использование его для асинхронных функций приводит к значительному снижению производительности, вероятно, из-за ходьбы.стек.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...