Asp.net mvc 4 NinJect Get服务未返回该类的实例
我正在使用MVC4.0和.NET4.0,希望使用Ninject 我有一个静态类,在其中创建对象。我不能使静态调用类非静态 我正在尝试获取基于此绑定的实例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
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;
}
}
}