Je suis ouvert à d'autres conteneurs IoC, tels que NInject et StructureMap s'ils sont beaucoup plus propres que cela. J'entends que StructureMap vient d'introduire des "conteneurs" qui pourraient peut-être simplifier cela?Y a-t-il une meilleure façon d'utiliser l'API de Castle Windsor pour les usines?
Comme le dit le titre, y a-t-il un meilleur moyen? Cela ressemble à beaucoup de code, juste pour enregistrer un objet qui nécessite une usine pour le créer.
// The process to register an object, with a factory method
var cfg = new MutableConfiguration(p.Name);
cfg.Attributes["factoryId"] = p.TypeFactory.Name;
cfg.Attributes["factoryCreate"] = "Create";
var model = _container.Kernel.ComponentModelBuilder.BuildModel(
p.Name, p.TypeService, p.Type, null);
model.LifestyleType = LifestyleType.Pooled;
model.Configuration = cfg;
_container.Kernel.AddCustomComponent(model);
Versas à fond vers le "non-usine" d'ajouter un composant:
// registering a component with no factory method
_container.AddComponentLifeStyle(
p.Name, p.TypeService, p.Type, LifestyleType.Singleton);
Le premier semble trop complexe.
Merci d'avance!
Avez-vous envisagé de vérifier la documentation avant d'envoyer ce message? http://using.castleproject.org/display/IoC/Fluent+Registration+API#FluentRegistrationAPI-Usingadelegateascomponentfactory: –
et la classe FactorySupportFacility propose également des méthodes pour vous aider si vous ne voulez pas avoir une API fluide. Vous avez essentiellement choisi la façon la moins optimale de le faire. –
Bonjour Krzysztof et merci pour les commentaires. C'est drôle, je n'ai jamais vu un lien vers la documentation du château - comme tous les liens, il y a des pages comme celle-ci: http://api.castleproject.org/ Directement depuis leur site web. Merci de m'avoir reliée à la documentation actuelle (mais soyez gentil dans vos commentaires à l'avenir). – eduncan911