Например, у меня есть OnMethodBoundaryAspect
логгер, который я применяю к методу итератора:
public override void OnEntry(MethodExecutionArgs args) {
BeginMethodScope( args );
Logger.LogRequestEntry();
}
public override void OnSuccess(MethodExecutionArgs args) {
Logger.LogRequestSuccess();
}
public override void OnException(MethodExecutionArgs args) {
Logger.LogRequestError( args.Exception );
}
public override void OnExit(MethodExecutionArgs args) {
EndMethodScope( args );
}
Если я использую семантическое консультирование:
OnEntry
вызывается, когда IEnumerable
запускается. OnExit
вызывается после завершения IEnumerable
.
Если я использую несемантическое консультирование:
OnEntry
/ OnExit
вызывается до / после создания IEnumerable
.
Но что, если я хочу использовать оба способа одновременно?Потому что я хочу регистрировать сам вызов метода (а не запуск итераций).
Может быть, я могу добиться этого с помощью низкоуровневых советов?