2010-03-12 3 views
3

J'utilise Unity App Block pour mon projet (version 1.2.0.0). J'ai un problème avec la méthode Unity Container BuildUp que j'utilise pour mes contrôles ascx. Voici un peu de code (c'est assez simple)Problèmes avec la méthode Unity BuildUp

public class BaseUserControl<T>:UserControl where T:class 
    { 
protected override void OnInit(EventArgs e) 
     { 
      InjectDependencies(); 
      base.OnInit(e); 
     } 

protected virtual void InjectDependencies() 
      { 
     var context = HttpContext.Current; 
       if (context == null) 
       { 
        return; 
       } 
       var accessor = context.ApplicationInstance as IContainerAccessor; 
       if (accessor == null) 
       { 
        return; 
       } 
       var container = accessor.Container; 
       if (container == null) 
       { 
        throw new InvalidOperationException("No Unity container found"); 
       } 
       container.BuildUp<T>(this as T); 

     } 
} 

Cette méthode est appelée dans le contrôle de base pour les contrôles ascx dans ma solution. Et ici, la propriété qui doit être injectée dans le contrôle des enfants:

[Dependency] 
    private IStock Stock { get; set; } 

Ainsi, après l'accumulation La propriété Stock est toujours vide. La méthode Resolve fonctionne correctement pour IStock avec le même conteneur et la même configuration. J'ai essayé l'accumulation avec une classe de test simple avec une seule propriété IStock et j'ai obtenu le même résultat. Alors, qu'est-ce qui ne va pas avec l'accumulation?

Répondre

5

J'ai trouvé ce qui n'allait pas avec mon code. Le problème était assez simple: la propriété IStock devrait être publique ou dans d'autres cas, l'accumulation ne la peuplerait pas avec la valeur enregistrée. J'espère que ça va aider quelqu'un dans le futur.

Questions connexes