2013-02-28 23 views
1

我想用Ninject而不是Funq来使用ServiceStack。我有以下几点:ServiceStack - 使用Ninject而不是Funq

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>(); 
    } 
} 

然后我的配置方法中:

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'.

我也不能确定我是否有取消注释将MVC设置为使用Funq IoC的行?我已经评论过,因为我将使用Ninject。那是对的吗?

我假设这一切都工作。我可以简单地注册任何依赖性内:

private static void RegisterServices(IKernel kernel) 
{ 

} 

回答

3

的代码完全匹配the documentation一个细微的差别。您必须使用ServiceStack.Configuration.IContainerAdapter而不是您自己的IContainerAdapter

删除您的实施,添加对ServiceStack.Configuration的引用,你应该没问题。

相关问题