2009-11-03 4 views
2

J'utilise Castle.Windsor comme un IOC. Donc j'essaye de résoudre un type de service dans le constructeur d'un HTTPHandler. Je continue à recevoir cette erreur, « Constructeur du type: « Namespace.type » not found. » Ma configuration présente les entrées suivantes pour le type de service: IDocumentDirectoryConstructeur sur le type: "Namespace.type" pas trouvé

<component id="restricted.content.directory" service="org.myorg.foundations.services.content.IDocumentDirectory, org.myorg.foundations.services" type="org.myorg.foundations.services.content.RestrictedLocalizationDocumentDirectory, org.myorg.foundations.services"> 
    <parameters> 
     <contentDirectory>${content.directory}</contentDirectory> 
     <localizations> 
     <array> 
      <item>en-us</item> 
      <item>es-us</item> 
     </array> 
     </localizations> 
    </parameters> 
    </component> 

    <component id="content.directory" service="org.myorg.foundations.services.content.IDocumentDirectory, org.myorg.foundations.services" type="org.myorg.foundations.services.web.client.WebServiceDocumentDirectory, org.myorg.foundations.services.web.client"> 
    <parameters> 
     <webServiceURL>#{contentDirectoryWebsiteUrl}</webServiceURL> 
    </parameters> 
    </component> 

Dans mon nouveau gestionnaire le constructeur ressemble à ceci:

public HeartBeatHttpHandler(IDocumentDirectory contentDirectory) 
    { 
     _contentDirectory = contentDirectory; 
    } 

Je n'ai jamais reçu cette erreur en utilisant Castle.Windsor. Quelqu'un peut-il expliquer?

Merci!

+0

Que fournit l'implémentation de 'IDocumentDirectory'? –

+0

est l'instance de HeartBeatHttpHandler récupérée avec windsor aussi? Si oui, pourriez-vous montrer la configuration du composant windsor pour HeartBeatHttpHandler –

+0

Quelle est la valeur réelle de "Namespace.type" dans votre message d'erreur? –

Répondre

4

Vous ne pouvez pas injecter une dépendance dans le code HTTPHandler géré .NET. Les objets qui implémentent IHttpHandler doivent avoir un constructeur sans paramètre.

J'ai utilisé un conteneur d'application à la place. Ce qui n'aurait pas été mon premier choix.

-Nick