2

我在 MVC 项目中使用 Ninject,并且在 Ninject.Mvc 中使用了自动注册功能,并在我的应用程序类中设置了绑定。但是,我有一个地方要创建一个与这些绑定分开的实例。在 StructureMap 中,您可以做var foo = ObjectFactory.GetInstance<IFoo>();,它会为您解决。Ninject 2中是否有等价物?我似乎无法在任何地方找到它。

4

2 回答 2

6

AFAIK,NInject 没有这样的静态方法,所以所有解析都应该转到某个内核。

但是您可以轻松实现它;

 class ObjectFactory
 {
     static IKernel kernel = new StandardKernel(.....);
     public static T GetInstance<T>()
     {
          return kernel.Get<T>();
     }
 }

虽然,IMO,NInject 作为 DI 容器比作为服务定位器更有用。

于 2009-10-16T05:38:36.760 回答
1

您还可以使用Common Service Locator作为 Ninject IOC 的抽象层,它提供了您想要的东西。优点是如果容器不再满足您的需求,您可以稍后切换容器。

在您的代码中,您可以使用如下内容:

ServiceLocator.Current.GetInstance<Type>();
于 2012-01-10T11:50:48.663 回答