2010-09-06 2 views
2

J'ai un httpHandler et en utilisant Unity 2 je voudrais injecter une dépendance dans mon HttpHandler.Injection de propriété Unity 2, comment traduire la configuration en syntaxe fluide?

Mon code ressemble:

public class MyHandler : BaseHandler 
{ 

    public MyHandler() 
    { 
    } 

    public IConfigurationManager Configuration 
    { 
     get; 
     set; 
    } 

    ... 
} 

Utilisation du web.config je le configurer comme celui-ci (à gauche le reste de la configuration pour la simplicité):

<type type="MyHandler"> 
    <typeConfig extensionType="Microsoft.Practices.Unity.Configuration.TypeInjectionElement, Microsoft.Practices.Unity.Configuration"> 
     <property name="Configuration" propertyType="IConfigurationManager"> 
     <dependency/> 
     </property> 
    </typeConfig> 
</type> 

Comment pourrais-je aller à propos de faire la même chose en utilisant une syntaxe fluide? Tout ce que j'ai essayé jusqu'ici laisse la propriété à zéro lorsque le gestionnaire tire.

Merci

Répondre

-1

Vous devez appeler la méthode ConfigureInjectionFor.

myContainer.Configure<InjectedMembers>() 
    .ConfigureInjectionFor<MyHandler>(
      new InjectionProperty("Configuration", 
            new ResolvedParameter<IConfigurationManager>()) 
           ) 
      ) 

EDIT:

Voici un exemple de l'usine Handler. Il vous permet de créer votre gestionnaire

class HandlerFactory : IHttpHandlerFactory 
    { 
     public IHttpHandler GetHandler(HttpContext context, string requestType, String url, String pathTranslated) 
     { 
      return MyContainerProvider.Container.Resolve<MyHandler>(); 
     } 
     public void ReleaseHandler(IHttpHandler handler) 
     { 
     } 
     public bool IsReusable 
     { 
      get { return false; } 
     } 
    } 

, vous devez ensuite enregistrer l'usine dans votre application Web (IIS pour permettre de le trouver). Vous pouvez trouver plus de détails here. ConfigureInjectionFor a été obsolète depuis que Unity 1.2 a été publié.

+0

Onof, pour une raison quelconque cela ne fonctionne pas pour moi. J'ai même essayé l'attribut [Dependency] sur la propriété Configuration. Injection à l'intérieur des contrôleurs semble fonctionner, mais je ne peux pas le faire fonctionner dans un httphandler avec Unity. – Thomas

+0

Cela suffit pour configurer le conteneur. Vous devez construire le gestionnaire, par exemple en enregistrant un HttpHandlerFactory – onof

+0

Onof, avez-vous un exemple de cela? Et aussi, pourquoi dois-je construire le gestionnaire? C'est assez nouveau pour moi, donc toute aide est appréciée. – Thomas

1

Cela devrait fonctionner:

container.RegisterType<MyHandler>(
    new InjectionProperty("Configuration")); 
Questions connexes