Используйте средство перехвата в замке Виндзор.
Так что пометьте свой класс
[Interceptor(typeof(UnhandledExceptionLogger))]
и создайте класс UnhandledExceptionLogger
, который реализует IInterceptor
.Примерно:
public void Intercept(IInvocation invocation) {
try {
invocation.Proceed();
}
catch (Exception e) {
// log the exception e
throw;
}
}
, а затем, когда Castle Windsor создаст экземпляр вашего класса, помеченный этим Interceptor
, он создаст прокси, который обернет все вызовы методов в приведенном выше блоке try / catch log / rethrow.