Pergunta

Na tentativa de configurar ServiceStack.net para usar o Ninject como seu COI, estou recebendo erros de referir-se a vários enlaces não está sendo definido.Principalmente para ICache Cliente.

Que ligações precisam ser criados para uso Ninject corretamente?

Atualmente especificadas:

Bind<ISessionFactory>().To<SessionFactory>();//Is this correct/needed?

Nota

Eu criei um IContainerAdapter como por ServiceStack documentação para implementar o uso do Ninject.(Encontrado aqui:ServiceStack COI Docs)

Nota 2 Meu apphost configurar o método tem esta aparência:

public override void Configure(Funq.Container container)
{
        IKernel kernel = new StandardKernel(new BindingModule());
        container.Adapter = new NinjectContainerAdapter(kernel);
}

Nota 3

Eu registrei o ICacheClient da seguinte forma:Bind().A();

E agora estou recebendo um erro apontando para IRequest

Error activating IRequestLogger\nNo matching bindings are available, and the type is not self-bindable

Adaptador De Container

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>();
    }
}
Foi útil?

Solução

Você injetado seu adaptador de Container com:

container.Adapter = new NinjectIocAdapter(kernel);

Se assim for, tente também fazer o seu AppHost classe interno se você ainda não tiver feito isso.Deve haver apenas 1 instância de AppHost e algumas COI, de como criar sua própria instância, exterminando toda a configuração do primeiro.

O comportamento que você está recebendo soa como Ninject está reclamando sobre dependências não resolvidas.Certifique-se de que você obter o Ninject para retornar nulo com dependências não resolvidas usando kernal.TryGet<T> em seu Container, e.g:

public T TryResolve<T>()
{
    return this._kernel.TryGet<T>();
}

Outras dicas

Você precisa escrever seu próprio IContainerAdapter e, em seguida, defina Recipiente.Adaptador no AppHost

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top