我在哪里注册HttpContextBase为StructureMap嵌套容器
本文关键字:嵌套 StructureMap 在哪里 注册 HttpContextBase | 更新日期: 2023-09-27 18:02:14
我是IoC的新手,在我的MVC项目中安装了Nuget Package StructureMap.MVC5
。
我正在尝试注册以下内容:For<HttpContextBase>().Use(() => new HttpContextWrapper(HttpContext.Current))
根据我正在阅读的内容,我需要在嵌套容器中引用它,并且我在包附带的StructureMapDependencyScope.cs
文件中看到对嵌套容器的引用。但是,我不知道在哪里/如何注册这个HttpContextBase。
我试着从StructuremapMvc.cs
文件注册它,像这样:
public static class StructuremapMvc {
public static StructureMapDependencyScope StructureMapDependencyScope { get; set; }
public static void End() {
StructureMapDependencyScope.Dispose();
}
public static void Start() {
IContainer container = IoC.Initialize();
StructureMapDependencyScope = new StructureMapDependencyScope(container);
StructureMapDependencyScope.CreateNestedContainer();
StructureMapDependencyScope.CurrentNestedContainer.Configure(x =>
{
x.For<IUserIdentity>().Use<CurrentUser>();
x.For<HttpContextBase>().Use(() => new HttpContextWrapper(HttpContext.Current));
});
DependencyResolver.SetResolver(StructureMapDependencyScope);
DynamicModuleUtility.RegisterModule(typeof(StructureMapScopeModule));
}
}
但这不起作用。我从StructureMapDependencyScope.cs
的HttpContext
属性里面得到一个错误。
您的解决方案应该包含一个名为DefaultRegistry
的类,您可以在其中添加注册。嵌套容器将自动从父容器继承此注册。