2013-12-02 3 views
0

У меня есть класс для перехвата DataException, который реализует интерфейс IInterceptor, однако метод Intercept не вызывается.Замок Виндзор не перехватывает DataException

Я регистрируя класс перехватчика так:

container.Register(Component.For<DatabaseErrorInterceptor>().LifestyleTransient()); 

Вот класс перехватчик:

public class DatabaseErrorInterceptor : IInterceptor 
    { 
     public void Intercept(IInvocation invocation) 
     { 
      try 
      { 
       invocation.Proceed(); 
      } 
      catch (DataException exc) 
      { 
       throw this.MapearExcecao(excecao); 
      } 
     } 

     private BusinessRuleException HandleException(DataException databaseError) 
     { 
      // ... 

      return new BusinessRuleException(...); 
     } 
} 
+0

http://stackoverflow.com/a/2575625/43846 может помочь – stuartd

+0

Как зарегистрировать исключение? Исключение составляет интерфейс. –

+0

Вам необходимо вызвать Interceptors () в службе базы данных, чтобы вызвать перехватчик, вам не нужно регистрировать исключение – stuartd

ответ

0

Мы нашли ответ на этот вопрос, он отсутствовал призыв к контейнеру. Kernel.ProxyFactory.AddInterceptorSelector (...);

Смежные вопросы