StructureMap,使用container或objectfactory配置?

cod*_*ing 6 c# structuremap

我做了这样的配置:

var container = new Container(x =>
                                              {
                                                  x.For<IEngine>().Use<V6Engine>();
                                                  x.For<ICar>().Use<HondaCar>();
                                              }
);
Run Code Online (Sandbox Code Playgroud)

然后在我的mvc控制器动作中我做了:

ICar car = ObjectFactory.GetInstance<ICar>();
Run Code Online (Sandbox Code Playgroud)

我应该以某种方式使用Container或ObjectFactory设置我的容器吗?它没有解决,所以我在ac#console应用程序中测试了一些东西,如果我这样做的话它会起作用:

ICar car = container.GetInstance<ICar>();
Run Code Online (Sandbox Code Playgroud)

但这仅在容器位于本地范围内时才有效,而在Web应用程序中,由于事物在global.asax.cs中连接起来并不明显

小智 0

我的配置如下

全局.asax

  ObjectFactory.Initialize(action =>
            {
                action.For<ISomething>().Use<Something>;
            });
Run Code Online (Sandbox Code Playgroud)

然后是其他地方。

 ObjectFactory.GetInstance<ISomething>();
Run Code Online (Sandbox Code Playgroud)

但这可能不是唯一的方法。另外我认为您可能正在寻找的是

Scan(scanner =>
        {
            scanner.AssemblyContainingType(....);
            scanner.AddAllTypesOf(....);
        }
Run Code Online (Sandbox Code Playgroud)