我从 1.4.4 源代码中看到 Autofac 的 ASP.NET 集成(通过 Autofac.Integration.Web)Page
在HttpContext.PreRequestHandlerExecute
事件处理中执行属性注入,但是页面的子控件没有获取它们的属性注入直到Page.PreLoad
.
这意味着,虽然子控件的注入属性不能在 OnInit 事件处理程序中使用。
例如,这很好用:
HelloWorld.aspx:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="HelloWorld.aspx.cs" Inherits="HelloWorld" %>
<html>
<body>
<asp:Label runat="server" id="lblMsg" OnInit="HandleInit"/>
</body>
</html>
HelloWorld.aspx.cs:
...
protected void HandleInit()
{
lblMsg.Text = _msgProvider.GetMessage();
}
public IMsgProvider _msgProvider { private get; set; } // <-- Injected
但是将 HelloWorld 更改Page
为UserControl
(.acsx) 并将 UserControl 放在另一个页面中不起作用,因为_msgProvider
没有足够早地注入。
有没有办法让 Autofac 更早地注入子控件的属性?或者这是可以在未来构建中解决的问题?谢谢!