我在哪里注册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.csHttpContext属性里面得到一个错误。

我在哪里注册HttpContextBase为StructureMap嵌套容器

您的解决方案应该包含一个名为DefaultRegistry的类,您可以在其中添加注册。嵌套容器将自动从父容器继承此注册。