0

我将 StructureMap 用作 MVC 4 的 DI。我通过 StructureMap 在构造函数中推送某些对象。

以下我在引导程序中

 public static void ConfigureDependencies()
 {
        ObjectFactory.Initialize(IE =>
        {
            IE.UseDefaultStructureMapConfigFile = true;
        });
 }

控制器工厂如下

 public class ControllerMyFactory : DefaultControllerFactory
 {
    protected override IController GetControllerInstance(System.Web.Routing.RequestContext requestContext, Type controllerType)
    {
        return ObjectFactory.GetInstance(controllerType) as IController;
    }
 }

然后我将其插入 Global.asax

 BootStrapper.ConfigureDependencies();
 ControllerBuilder.Current.SetControllerFactory(new ControllerMyFactory());

以下是我的控制器之一

public class SomeController : Controller
{
    ISomeService service;
    public SomeController(ISomeService service)
    {
          this.service = service;
    } 
}

现在我的问题是对象实例化,它在构造函数中传递。我曾经像以下那样构造这个对象

ISomeService service = CommonGateway.GetChannnel<ISomeService>();

如何使用 StructureMap 插入此插件?如何更改 StructureMap 实例化对象的方式?

如果我不是很清楚,请告诉我?

谢谢,

一个

4

1 回答 1

1

您只需要配置 StructureMap 即可了解您的 ISomeService 以及如何像这样实例化它:

ObjectFactory.Initialize(IE =>
{
    IE.For<ISomeService>().Use(() => CommonGateway.GetChannel<ISomeService>() as ISomeService);
});

这将在实例化您的控制器时调用您的工厂方法,因为您的控制器已经由 StructureMap 创建。

于 2013-07-12T14:26:41.853 回答