2008-12-16 7 views
0

J'ai une classeUnité du CIO Configuration

public class Broker 
{ 
    public Broker(string[] hosts, string endPoint, string port, Type remoteType) 
    { 
    } 
} 

Ce que je veux configurer à l'aide de configuration XML Unity, je peux le configurer en utilisant le code en C# comme suit déjà, où « conteneur » est mon conteneur Unity

  container.Configure<InjectedMembers>() 
       .ConfigureInjectionFor<Broker>("myBroker", 
                  new InjectionConstructor(hosts, endPoint, port, new InjectionParameter(typeof(IMyBrokeredObject)))); 

et il happly résoudre en utilisant l'unité normale appelle

container.Resolve ("myBroker");

Mais actuellement, mon xml ne peut pas résoudre le paramètre final IMyBrokeredObject, j'obtiens une exception de résolution, car Unity essaye de résoudre le type d'injection du type, comme dans le code ci-dessus.

Des idées?

Répondre

1

Avez-vous défini le type dans le fichier de configuration:

<unity> 
<typeAliases> 
    <typeAlias alias="IMyBrokeredObject" type="MyAssembly.IMyBrokeredObject, MyAssembly" /> 
</typeAliases> 
<containers> 
     <container> 
     <types> 
      <!-- Views --> 
      <type type="IMyBrokeredObject" mapTo="MyAssembly.MyBrokeredObjectImplementation, MyAssembly" /> 
0

Mais mon problème est qu'il n'y a pas mise en œuvre disponible pour le IMyBrokeredObject, ce qui se passe réellement dans l'arrière-plan est que le courtier fournit à distance objets donnés une interface, l'implémentation réelle est ailleurs.

Dans le code que je peux obtenir le conteneur pour fournir un courtier en donnant un « InjectionParameter », je ne peux pas savoir comment faire cela dans la configuration xml. C'est difficile parce que je ne veux pas que le conteneur donne une instance de l'interface mais que l'interface soit effectivement telle quelle, le paramètre "InjectionParameter" est un stockage pour une valeur, la valeur stockée est transmise lorsque l'objet est créé par le conteneur, tel quel. Ce que je cherche est le xml de configuration requise pour créer le InjectionParameter et lui donner la valeur, si cela est possible?