无法在 Asp.net MVC 中使用 StructureMap 4.5.2
Can't using StructureMap 4.5.2 in Asp.net MVC
我是 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());
});
}
并且我在我的存储库 class 中使用依赖项,如下所示:
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
和我的存储库 class 在另一个程序集中。 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
我是 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());
});
}
并且我在我的存储库 class 中使用依赖项,如下所示:
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
和我的存储库 class 在另一个程序集中。 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