Эта статья является зеркальной статьёй машинного перевода, пожалуйста, нажмите здесь, чтобы перейти к оригиналу.

Вид: 29154|Ответ: 2

[Источник] .NET/C# атрибутирует CallerMemberName, CallerFilePath, CallerLineNumber

[Скопировать ссылку]
Опубликовано 11.08.2021 9:45:56 | | | |
В .Net 4.5 были введены три атрибута: CallerMemberName, CallerFilePath и CallerLineNumber. С помощью компилятора можно получить имя вызывающей функции (точнее, это должен быть участник), файл вызова и номер линии вызова.

Документация:https://docs.microsoft.com/en-us ... membernameattribute

Вы также можете использовать объекты StackTrace и StackFrame для их получения, но с этой функцией мы получаем их гораздо удобнее.

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

StackFrame: Предоставляет информацию о StackFrame (вызове функции в стеке вызовов, представляющей текущий поток).

Ранее я использовал AOP для получения имени метода вызывающего через StackTrace, и код был следующим:


Используя эту функцию, тестовый код выглядит следующим образом:

Визуализации:



(Конец)




Предыдущий:Обновление MavenПолитика обновления снимков политики
Следующий:Javabyte[] и InputStream преобразуются друг в друга
 Хозяин| Опубликовано 27.11.2022 21:09:56 |
 Хозяин| Опубликовано 27.11.2022 22:35:47 |
Получить текущее название метода из асинхронной функции?

Вход по гиперссылке виден.

C# 5 добавляет свойства информации о звонящих, что может дать вам больше того, что вы ищете. Обратите внимание, что они вставляют соответствующую информацию во время компиляции в вызывающий сайт, а не используют данные во время выполнения. Более ограниченная функциональность (конечно, полный стек вызовов нет), но гораздо быстрее.





Отказ:
Всё программное обеспечение, программные материалы или статьи, публикуемые Code Farmer Network, предназначены исключительно для учебных и исследовательских целей; Вышеуказанный контент не должен использоваться в коммерческих или незаконных целях, иначе пользователи несут все последствия. Информация на этом сайте взята из Интернета, и споры по авторским правам не имеют отношения к этому сайту. Вы должны полностью удалить вышеуказанный контент с компьютера в течение 24 часов после загрузки. Если вам нравится программа, пожалуйста, поддержите подлинное программное обеспечение, купите регистрацию и получите лучшие подлинные услуги. Если есть нарушение, пожалуйста, свяжитесь с нами по электронной почте.

Mail To:help@itsvse.com