【问题标题】:Can't using StructureMap 4.5.2 in Asp.net MVC无法在 Asp.net MVC 中使用 StructureMap 4.5.2
【发布时间】:2017-09-23 11:24:18
【问题描述】:

我是 StructureMap 的新手,我使用的是 4.5.2 版。我在 Global.asax 中使用 StructureMap 注册了我的 DataContext,如下所示:

void Application_Start(object sender, EventArgs e)
    {
        SetupIcoContainer();

        // Code that runs on application startup
        AreaRegistration.RegisterAllAreas();
        GlobalConfiguration.Configure(WebApiConfig.Register);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
    }

    private void SetupIcoContainer()
    {
        var container = new StructureMap.Container(_ =>
        {
            _.For<Data.IUnitOfWork>().Singleton().Use(x => new Data.Database.DataContext());
        });
    }

我在我的存储库类中使用依赖项,如下所示:

var uow = new StructureMap.Container().GetInstance<Data.IUnitOfWork>();

但我收到此错误:

没有注册默认实例,无法自动确定类型“Data.IUnitOfWork”

Data.IUnitOfWorkData.Database.DataContext 和我的 Repository 类在另一个程序集中。 StructureMap 不注册 DataContext。

谢谢

【问题讨论】:

    标签: c# asp.net-mvc dependency-injection structuremap structuremap4


    【解决方案1】:
    var uow = new StructureMap.Container();
    

    实例化一个不知道 IUnitOfWork 的新空容器。

    您可以尝试在 global.asax.cs 中设置一个全局静态变量

    最好的方法是使用 StructureMap 作为 MVC DependencyResolver

    这里有办法 How to get the Structuremap IContainer instance from Asp.Net MVC 5 Dependency Resolver

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-18
      • 2017-01-31
      相关资源
      最近更新 更多