Я разрабатываю настольное приложение WPF с каркасом caliburn.micro и хочу настроить вспомогательные перехватчики, чтобы я мог перехватывать вызовы методов.Я хотел бы сделать это для обработки исключений в централизованном месте, чтобы у меня не было много блоков try-catch повсюду вокруг моего кода.
Я не смог этого сделать, потому что каждый раз, когда ясоединяя все с помощью ninject, система выдает исключение.
Итак, вот некоторый код:
Метод конфигурации AppBootstrapper выглядит следующим образом:
protected override void Configure()
{
_kernel = new StandardKernel(new NinjectServiceModule());
_kernel.Bind<IWindowManager>().To<WindowManager>().InSingletonScope();
_kernel.Bind<IEventAggregator>().To<EventAggregator>().InSingletonScope();
_kernel.Bind<ISomeViewModel>().To<SomeViewModel>().Intercept().With<SomeInterceptor>() //this is where the exception is thrown;
_kernel.Bind<IShell>().To<ShellViewModel>();
}
Теперь метод перехватав моем перехватчике:
public void Intercept(IInvocation invocation)
{
if (invocation.Request.Method.Name == "TheMethodIWantIntercepted")
{
try
{
invocation.Proceed();
}
catch (Exception)
{
Console.WriteLine("I Handled exception");
}
}
else
{
invocation.Proceed();
}
}
Метод в модели представления выглядит следующим образом:
public virtual void TheMethodIWantIntercepted()
{
//Some logic here
}
Так вот, как должны работать перехватчики.Но это не работает, каждый раз, когда я запускаю программу, и ninject пытается вставить экземпляр SomeViewModel в ISomeViewModel, сбой выполнения программы, и это исключение, которое выдается (и трассировка стека): http://pastebin.com/qerZAjVr
Надеюсь, вы поможете мне с этим, заранее спасибо.