Asp.net mvc 4 NinJect Get服务未返回该类的实例

Asp.net mvc 4 NinJect Get服务未返回该类的实例,asp.net-mvc-4,.net-4.0,ninject,Asp.net Mvc 4,.net 4.0,Ninject,我正在使用MVC4.0和.NET4.0,希望使用Ninject 我有一个静态类,在其中创建对象。我不能使静态调用类非静态 我正在尝试获取基于此绑定的实例 Bind<ClinicWebsite.ViewModels.ISelectionEngine>) .To<ClinicWebsite.ViewModels.Genric_SelectionEngine>(); 但当我检查“myservice”时,我得到: 我可能做错了什么,或者是否有其他方法可以显式地使用Nin

我正在使用MVC4.0和.NET4.0,希望使用Ninject

我有一个静态类,在其中创建对象。我不能使静态调用类非静态

我正在尝试获取基于此绑定的实例

Bind<ClinicWebsite.ViewModels.ISelectionEngine>)
    .To<ClinicWebsite.ViewModels.Genric_SelectionEngine>();
但当我检查“myservice”时,我得到:

我可能做错了什么,或者是否有其他方法可以显式地使用Ninject创建实例(同样,无法摆脱静态调用类)

NinjectWebCommon

public static class NinjectWebCommon 
{
private static readonly Bootstrapper bootstrapper = new Bootstrapper();
private static readonly StandardKernel kernel = new StandardKernel();

public static void Start() 
{
    DynamicModuleUtility.RegisterModule(typeof(OnePerRequestHttpModule));
    DynamicModuleUtility.RegisterModule(typeof(NinjectHttpModule));
    bootstrapper.Initialize(CreateKernel);
}
public static void Stop()
{
    bootstrapper.ShutDown();
}        
private static IKernel CreateKernel()
{         
    try
    {
        kernel.Bind<Func<IKernel>>().ToMethod(ctx => () => new Bootstrapper().Kernel);
            kernel.Bind<IHttpModule>().To<HttpApplicationInitializationHttpModule>();
        //DependencyResolver.SetResolver(new NinjectDependencyResolver(kernel));
        RegisterServices(kernel);

        return kernel;
    }
    catch
    {
        kernel.Dispose();
        throw;
    }
}
private static void RegisterServices(IKernel kernel)
{
    Bind<ClinicWebsite.ViewModels.ISelectionEngine>().To<ClinicWebsite.ViewModels.Generic_SelectionEngine>();
}
public static IKernel Kernel
{
    get
    {
        return kernel;
    }
}
}
公共静态类NinjectWebCommon
{
私有静态只读引导程序Bootstrapper=new Bootstrapper();
私有静态只读标准内核=新标准内核();
公共静态void Start()
{
RegisterModule(typeof(OnePerRequestHttpModule));
RegisterModule(typeof(NinjectHttpModule));
初始化(CreateKernel);
}
公共静态无效停止()
{
bootstrapper.ShutDown();
}        
私有静态IKernel CreateKernel()
{         
尝试
{
kernel.Bind().ToMethod(ctx=>()=>newbootstrapper().kernel);
kernel.Bind().To();
//SetResolver(新的NinjectDependencyResolver(内核));
注册服务(内核);
返回内核;
}
抓住
{
Dispose();
投掷;
}
}
私有静态无效注册服务(IKernel内核)
{
绑定()到();
}
公共静态IKernel内核
{
得到
{
返回内核;
}
}
}
我找到了答案。
因为这是在一个静态类中,我需要使“myservice”成为该类的静态成员,然后分配给它。

如何检查该变量?在debig?您确定它在评估期间在范围内吗?
The name 'myservice' does not exist in the current context
public static class NinjectWebCommon 
{
private static readonly Bootstrapper bootstrapper = new Bootstrapper();
private static readonly StandardKernel kernel = new StandardKernel();

public static void Start() 
{
    DynamicModuleUtility.RegisterModule(typeof(OnePerRequestHttpModule));
    DynamicModuleUtility.RegisterModule(typeof(NinjectHttpModule));
    bootstrapper.Initialize(CreateKernel);
}
public static void Stop()
{
    bootstrapper.ShutDown();
}        
private static IKernel CreateKernel()
{         
    try
    {
        kernel.Bind<Func<IKernel>>().ToMethod(ctx => () => new Bootstrapper().Kernel);
            kernel.Bind<IHttpModule>().To<HttpApplicationInitializationHttpModule>();
        //DependencyResolver.SetResolver(new NinjectDependencyResolver(kernel));
        RegisterServices(kernel);

        return kernel;
    }
    catch
    {
        kernel.Dispose();
        throw;
    }
}
private static void RegisterServices(IKernel kernel)
{
    Bind<ClinicWebsite.ViewModels.ISelectionEngine>().To<ClinicWebsite.ViewModels.Generic_SelectionEngine>();
}
public static IKernel Kernel
{
    get
    {
        return kernel;
    }
}
}