错误'页面不包含带0参数的构造函数'使用ASP.net WebForm和autofac

时间:2015-12-04 12:26:13

标签: c# asp.net webforms autofac

是否可以将Autofac配置为使用ASP.NET Webforms来使用依赖注入

我的全球守则:

 static IContainerProvider _containerProvider;

    public IContainerProvider ContainerProvider
    {
        get { return _containerProvider; }
    }

    protected void Application_Start(object sender, EventArgs e)
    {
        var builder = new ContainerBuilder();

        builder.RegisterType<EmployeeManager>().As<IEmployeeManager>().InstancePerRequest();
        _containerProvider = new ContainerProvider(builder.Build());
    }

我的网页代码:

 private readonly IEmployeeManager _empManager;
    public WebForm2(IEmployeeManager empManager)
    {
        _empManager = empManager;
    }
    protected void Page_Load(object sender, EventArgs e)
    {
        _empManager.GetAllEmployees();
    }

错误: Error

1 个答案:

答案 0 :(得分:2)

  

为了将依赖项注入Web表单页面(System.Web.UI.Page实例)或用户控件(System.Web.UI.UserControl实例),您必须将其依赖项公开为允许设置的公共属性。这使PropertyInjectionModule能够为您填充这些属性。
  &GT; http://docs.autofac.org/en/latest/integration/webforms.html

由于ASP.net WebForm中的内部限制,页面中的构造函数注入是不可能的。 ASP.net WebForm页面中只允许注入属性。 documentation解释了如何处理这种限制。