寻找Ninject等效的StructureMap的ObjectFactory.GetInstance()方法

时间:2009-10-16 05:31:23

标签: ninject

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

2 个答案:

答案 0 :(得分:6)

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

但你可以轻松实现它;

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

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

答案 1 :(得分:1)

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

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

ServiceLocator.Current.GetInstance<Type>();