Looking for Ninject equivalent of StructureMap'

2020-02-29 17:31发布

I'm using Ninject in an MVC project and I've used the autoregistration features in Ninject.Mvc and have my bindings set up in my application class. However, I have a place where I want to create an instance separate from those bindings. In StructureMap, you can do var foo = ObjectFactory.GetInstance<IFoo>(); and it will resolve it for you. Is there an equivalent in Ninject 2? I can't seem to find it anywhere.

标签: ninject
2条回答
We Are One
2楼-- · 2020-02-29 18:02

AFAIK, NInject doesn't have static method like this so all resolving should go to some kernel.

But you can implement it easily;

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

Although, IMO, NInject is much more useful as DI container than as service locator.

查看更多
够拽才男人
3楼-- · 2020-02-29 18:21

You can also use Common Service Locator as an abstraction layer for Ninject IOC which offers what you want. The advantage is that you can later switch container if it does not fit your needs anymore.

In your code you can use something like this:

ServiceLocator.Current.GetInstance<Type>();
查看更多
登录 后发表回答