2010-03-10 56 views
1

我從1.4.4的資源中看到,Autofac的ASP.NET集成(通過Autofac.Integration.Web)將Page上的屬性注入爲HttpContext.PreRequestHandlerExecute事件處理的一部分,但是頁面的子控件不受控制, t得到他們的屬性注入,直到Page.PreLoadAutofac的ASP.NET集成是否支持PreInit或Init事件?

這是什麼意思,雖然是子控件的注入屬性不可用於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 PageUserControl(.acsx),並把用戶控件在另一頁不起作用,因爲_msgProvider沒有注入足夠早。

有沒有辦法讓Autofac更早地注入子控件的屬性?或者這是可以在未來構建中解決的問題?謝謝!

+0

這可能會進入Autofac問題跟蹤器:http://code.google.com/p/autofac/issues/list – 2010-03-11 07:40:38

+0

作爲問題#203添加(http://code.google.com/p/autofac/issues/detail?id = 203) – 2010-03-11 17:24:24

+0

現在針對此問題的任何解決方法或修補程序? – 2014-11-19 06:15:34

回答

1

我爲這個問題想出了一個Autofac的小補丁。詳情請參閱Google Code項目中的See the issue tracker

+0

正如在Autofac問題跟蹤器中指出的那樣,補丁必須被退出。 Autofac維護人員將該錯誤解析爲「WontFix」。 – 2014-11-19 18:57:25