1

FunqではなくNinjectでServiceStackを使用しようとしています。私は次のものを持っています:

public interface IContainerAdapter
{
    T Resolve<T>();
    T TryResolve<T>();
}

public class NinjectIocAdapter : IContainerAdapter
{
    private readonly IKernel kernel;

    public NinjectIocAdapter(IKernel kernel)
    {
        this.kernel = kernel;
    }

    public T Resolve<T>()
    {
        return this.kernel.Get<T>();
    }

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

次に、Configureメソッド内で:

public override void Configure(Funq.Container container)
{
    //Set JSON web services to return idiomatic JSON camelCase properties
    ServiceStack.Text.JsConfig.EmitCamelCaseNames = true;

    IKernel kernel = new StandardKernel();
    container.Adapter = new NinjectIocAdapter(kernel);

    //Set MVC to use the same Funq IOC as ServiceStack
    //ControllerBuilder.Current.SetControllerFactory(new FunqControllerFactory(container));
}

しかし、次のエラーが発生します。

Cannot implicitly convert type 'NinjectIocAdapter' to 'ServiceStack.Configuration.IContainerAdapter'.

また、Funq IoCを使用するようにMVCを設定するために、行のコメントを解除する必要があるかどうかもわかりません。Ninjectを使用するので、コメントアウトしました。あれは正しいですか?

これがすべて機能していると思います。依存関係を内部に登録するだけです。

private static void RegisterServices(IKernel kernel)
{

}   
4

1 に答える 1

3

コードはドキュメントと完全に一致していますが、1 つの微妙な違いがあります。

ServiceStack.Configuration.IContainerAdapter独自の の代わりに使用する必要がありますIContainerAdapter

実装を削除し、への参照を追加ServiceStack.Configurationすれば問題ありません。

于 2013-02-28T12:27:45.527 に答える