Перехват с Ninject. Не в состоянии загрузить IProxyRequestFactory
Я учусь использовать шаблон Ninject и Interceptor.
У меня есть следующий перехватчик.
public class MyInterceptor:IInterceptor
{
public void Intercept(IInvocation invocation)
{
Console.WriteLine("Pre Execute: " + invocation.Request.Method.Name);
foreach (var param in invocation.Request.Arguments)
{
Console.WriteLine("param : " + param);
}
invocation.Proceed();
Console.WriteLine("Post Execute: " + invocation.Request.Method.Name);
Console.WriteLine("Returned: " + invocation.ReturnValue);
}
}
И есть класс с именемMyClass
который получил только 2 простых метода, виртуальный, чтобы позволить перехватчикам работать с ними. (Два метода - Echo и double, которые делают то, что говорит их имя.)
Я добавил Ninject, Ninject.Extensions.Interception и Ninject.Extensions.Interception.DynamicProxy в свой проект через NuGet.
Добавлено следующееusing
заявления.
using Ninject;
using Ninject.Extensions.Interception.Infrastructure.Language;
using Ninject.Extensions.Interception;
Мой метод Main, который выполняет загрузку, выглядит следующим образом.
static void Main(string[] args)
{
MyClass o = null;
using (IKernel kernel = new StandardKernel())
{
kernel.Bind<MyClass>().ToSelf().Intercept().With(new MyInterceptor());
o = kernel.Get<MyClass>();
}
o.Echo("Hello World!"); // Error
o.Double(5);
}
Я получаю следующую ошибку в указанной строке.
Error loading Ninject component IProxyRequestFactory
No such component has been registered in the kernel's component container.
Suggestions:
1) If you have created a custom subclass for KernelBase, ensure that you have properly
implemented the AddComponents() method.
2) Ensure that you have not removed the component from the container via a call to RemoveAll().
3) Ensure you have not accidentally created more than one kernel..
Может кто-нибудь сказать мне, что я делаю не так?