Je voudrais créer plusieurs services similaires qui peuvent être éteints et accessibles par leur nom (= touches).Comment créer plusieurs composants d'un service avec des dépendances c'tor
Pour la mise en œuvre du service que je veux utiliser des classes avec dépendances c'tor comme ceci:
public interface IXYService
{
string Tag { get; set; }
}
public class _1stXYService : IXYService
{
public _1stXYService(string Tag)
{
this.Tag = Tag;
}
public string Tag { get; set; }
}
Ce que j'ai essayé était d'utiliser « AddComponentWithProperties » d'avoir une instance concrète créé qui est accessible par une clé donnée :
...
IDictionary l_xyServiceInitParameters = new Hashtable { { "Tag", "1" } };
l_container.AddComponentWithProperties
(
"1st XY service",
typeof(IXYService),
typeof(_1stXYService),
l_xyServiceInitParameters
);
l_xyServiceInitParameters["Tag"] = "2";
l_container.AddComponentWithProperties
(
"2nd XY service",
typeof(IXYService),
typeof(_1stXYService),
l_xyServiceInitParameters
);
...
var service = l_container[serviceName] as IXYService;
Toutefois, les dépendances n'ont pas été résolues et par conséquent, les services ne sont pas disponibles.
L'utilisation de IWindsorContainer.Resolve (...) pour renseigner les paramètres n'est pas souhaitée.
La construction par XML fonctionne, mais n'est pas suffisante dans tous les cas.
Comment pourrais-je atteindre mes objectifs?
si vous voulez résoudre le service par sa propriété Tag? –
Tous les composants windsor ont un ID, qui est une chaîne. Cela serait-il suffisant? Ou doit-il être votre propre propriété Tag? –
L'ID, dans le cas d'utilisation de 'AddComponentWithProperties', c'est le paramètre 'clé' qui correspondrait parfaitement. Dans l'exemple, ce sont les clés "1er service XY" et "2ème service XY". – apollo