Al tratar de configurar ServiceStack.net para utilizar Ninject como su IOC, recibo errores que hacen referencia a que no se han definido varias vinculaciones. Principalmente para ICache Client.Cómo configurar Ninject para que funcione con ServiceStack.net
¿Qué enlaces específicos deben crearse para utilizar Ninject correctamente?
Actualmente han especificado:
Bind<ISessionFactory>().To<SessionFactory>();//Is this correct/needed?
Nota
He creado una IContainerAdapter según el documention ServiceStack para implementar el uso de Ninject. (que se encuentra aquí: ServiceStack IOC Docs)
Nota 2 Mi método apphost de configuración es el siguiente:
public override void Configure(Funq.Container container)
{
IKernel kernel = new StandardKernel(new BindingModule());
container.Adapter = new NinjectContainerAdapter(kernel);
}
Nota 3
He registrado el ICacheClient de la siguiente manera: bind ().A();
Y ahora estoy recibiendo un error señalando IRequest
Error activating IRequestLogger\nNo matching bindings are available, and the type is not self-bindable
adaptador del recipiente
public class NinjectContainerAdapter : IContainerAdapter
{
private readonly IKernel _kernel;
public NinjectContainerAdapter(IKernel kernel)
{
this._kernel = kernel;
}
public T TryResolve<T>()
{
return this._kernel.Get<T>();
}
public T Resolve<T>()
{
return this._kernel.Get<T>();
}
}
Sí, por favor, vea mi segunda nota anterior. También intenté cambiar a interno con no éxito – stephen776
Mensaje de error: Error al activar ICacheClient \ nNo hay enlaces coincidentes disponibles, y el tipo no es autocompatible – stephen776
¿Ha registrado un ICacheClient? Tenga en cuenta que las inyecciones de propiedad utilizan la interfaz TryResolve que su adaptador debe devolver nulo para las dependencias no encontradas/no registradas. El error parece un Ninject uno. De lo contrario, podría registrarlo explícitamente con Bind (). A (); pero devolver nulo es mejor ya que es el comportamiento esperado. –
mythz