PostSharp - исключение метода с использованием AttributeExclude не работает - PullRequest
1 голос
/ 01 февраля 2011

У нас есть проект, в котором мы используем PostSharp, чтобы включить ведение журнала.Работает отлично.Однако есть несколько методов, которые выполняются в очень узких циклах, где накладные расходы на ведение журнала действительно составляют значительную сумму.Я пытаюсь найти лучший способ исключить их из кода регистрации.

Из того, что я прочитал, этот подход должен работать

AssemblyInfo.cs

// turn on logging for all methods in all classes
[assembly: Log(LogType.Debug)]

Code.cs

// exclude this specific method
[Log(AttributeExclude=true)]
private void SomeMethod(...)

Однако, когда я делаю этои запустить его с помощью профилировщика, я все еще вижу код журнала, выполняемый на SomeMethod ().Я пробовал много разных итераций этого, основываясь на сообщениях на SO и форумах PostSharp, и я всегда получаю одинаковый результат.очевидно.

1 Ответ

0 голосов
/ 02 февраля 2011

Я выяснил, что моя подпрограмма SomeMethod () содержала запрос LINQ, который компилятор превращал в отдельный метод. Этот метод, сгенерированный компилятором, также был декорирован PostSharp атрибутом Log. Глядя на это в профилировщике, было не ясно, что происходит, но после использования Resharper, чтобы копаться в сгенерированном коде, я понял это.

...