Je vois de fouiller dans la source 1.4.4 que l'intégration ASP.NET d'Autofac (via Autofac.Integration.Web) effectue l'injection de propriétés sur le Page
dans le cadre de la gestion des événements HttpContext.PreRequestHandlerExecute
, mais que les contrôles enfant de la page ne ' t obtenir leurs propriétés injecté jusqu'à Page.PreLoad
. Cela signifie cependant que les propriétés injectées des contrôles enfants ne sont pas disponibles dans le gestionnaire d'événements OnInit.Est-ce que l'intégration ASP.NET d'autofac prend en charge les événements PreInit ou Init?
Par exemple, cela fonctionne très bien:
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
Mais changer le HelloWorld Page
à un UserControl
(.acsx) et de mettre l'UserControl dans une autre page ne fonctionne pas parce que _msgProvider
n'est pas injecté assez tôt.
Existe-t-il un moyen de faire en sorte qu'Autofac injecte les propriétés des contrôles enfants plus tôt? Ou est-ce quelque chose qui peut être abordé dans une future construction? Merci!
Cela devrait probablement aller dans le suivi des problèmes Autofac: http://code.google.com/p/autofac/issues/list –
Ajouté que le problème # 203 (http://code.google.com/p/autofac/issues/detail? id = 203) –
Des solutions de contournement ou des correctifs pour ce problème maintenant? –