asp.net-mvc - StructureMap:名称 'ObjectFactory' 在当前上下文中不存在

标签 asp.net-mvc asp.net-mvc-4 structuremap structuremap3 structuremap4

我正在使用 StructureMap 来解决依赖关系,这在旧版本上运行良好。但是在更新 StructureMap 版本 4.2.0.40 之后,我遇到了这个错误。

ObjectFactory 现在在新版本中已经过时。 那么如何修改以下逻辑以适应更新版本。

protected override IController GetControllerInstance(RequestContext requestContext, Type controllerType)
        {
            try
            {
                if ((requestContext == null) || (controllerType == null))
                    return null;

                return (Controller)ObjectFactory.GetInstance(controllerType);
            }
            catch (StructureMapException)
            {
                System.Diagnostics.Debug.WriteLine(ObjectFactory.WhatDoIHave());
                throw new Exception(ObjectFactory.WhatDoIHave());
            }
        }

Bootstrapper.cs

public static class Bootstrapper
    {
        public static void Run()
        {
            ControllerBuilder.Current
                .SetControllerFactory(new StructureMapControllerFactory());

            ObjectFactory.Initialize(x =>
            {
                x.AddConfigurationFromXmlFile(@"D:\Samples\Web_API\OneCode\StructureMap.Web\StructureMap.Web\StructureMap.xml");
            });
        }
    }
}

最佳答案

您必须添加自己的 ObjectFactory 实现,例如:

public static class ObjectFactory
{
    private static readonly Lazy<Container> _containerBuilder =
        new Lazy<Container>(defaultContainer, LazyThreadSafetyMode.ExecutionAndPublication);

    public static IContainer Container
    {
       get { return _containerBuilder.Value; }
    }

    private static Container defaultContainer()
    {
        return new Container(x =>
        {
           // default config
        });
    }
}

参见 here更多细节。

或者返回使用旧版本的 StructureMap。

关于asp.net-mvc - StructureMap:名称 'ObjectFactory' 在当前上下文中不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37196452/

相关文章:

ASP.NET(MVC)Outputcache和并发请求

asp.net-mvc - ASP.NET MVC RequireHttps

asp.net-mvc - Autofac 生命周期范围与 ASP.NET MVC

WCF 跨多个客户端共享 IClientMessageInspector 实例

c# - 为什么 Nhibernate 在我的 MVC 应用程序中跨多个请求共享 session ?

c# - 如何读取 html 帮助元素的名称

c# - 值是逗号而不是点的范围验证

jquery - Controller 操作 View 中未加载 CSS 和 Js

c# - 无法更新用户,因为它正在检查唯一的用户名

winforms - 使用 Windows 窗体的 StructureMap