2011-03-11 68 views
1

我正在使用Ninject(一个MVC Web应用程序)开发我的第一个项目,并且对Ninject的正确/最佳使用有疑问。有关Ninject实现的建议

我已经设置了一个NinjectModule,它将接口绑定到具体类,但现在我想在我的代码中创建接口对象的实例。为了实现这一点,我写了下面的方法:

public class NinjectControllerFactory : DefaultControllerFactory { 

    private class MyServices : NinjectModule { 
    ... 
    } 

    public static IMyRepository GetMyRepository() 
    { 
     IKernel kernel = new StandardKernel(new MyServices()); 
     return kernel.Get<IMyRepository>(); 
    } 
} 

,这似乎很好地工作......

IMyRepository tempDB = ControllerFactory.GetRoomarRepository(); 

我的问题是,这种正确的/最佳的方式来实现的结果,我寻找?我猜我担心创建内核实例的开销。

回答

2

阅读文档:https://github.com/ninject/ninject.web.mvc/wiki/MVC3并查看示例项目。

+0

谢谢Remo。提前道歉,但我想我可能会尝试你的耐心......假设我有一个接口,并且我有两个类来实现该接口。在我的代码中,我想创建一个简单的控制台应用程序(例如),该接口的一个实例。你/你/你应该根据NinjectModule从字面上定义一个类,然后创建一个Ninject StandardKernel对象并将其用于Get()具体实例吗? – Neilski 2011-03-11 15:45:35

+0

通常没有在应用程序的引导程序中配置一个内核。它尽可能少使用。许多应用程序只需一次调用即可创建所有必要的服务。在MVC3的情况下,你根本不需要任何呼叫。 – 2011-03-11 16:40:31