Я прокручиваю свой собственный класс логгеров и хочу представить иерархию логов, когда приложение проходит различные фазы:
log start
loading
loaded 400 values
processing
couldn't process var "x"
и т.д.
В C ++ (да, я знаю), я бы использовал классы RAII, которые помещались в стек журналов при создании и выталкивались, когда выходили из области видимости. Затем вы можете оставить функции в любой точке и при этом вести последовательную запись.
Очевидно, что в C # любая переменная должна быть новой, поэтому она не будет удалена до следующего цикла сборки мусора, и если вы сразу создадите новый класслет, у вас может быть несинхронизированный регистратор.
Как бы люди попытались решить эту проблему в C #? Я хочу, чтобы синтаксис регистратора был как можно более незаметным для текущей функции, и при этом поддерживаю функции с несколькими точками выхода.
Единственное решение, которое я могу придумать, - это закрыть, что closeHeirarchy () вызывает каждое выражение return - и вы знаете, что я где-то пропущу одно.
Редактировать: Я должен дать понять, что меня интересует, главным образом, то, как бы вы повторили поведение RAII в c #. Есть ли механизм, обеспечивающий идентичное поведение?