无法在Asp.net MVC中使用StructureMap 4.5.2

问题描述:

我是新来的StructureMap,我使用的是版本4.5.2。我注册了我的StructureMap的DataContext在Global.asax中是这样的:无法在Asp.net MVC中使用StructureMap 4.5.2

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>(); 

,但我得到这个错误:

No default Instance is registered and cannot be automatically determined for type 'Data.IUnitOfWork'

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

感谢

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