Cet enregistrement fonctionne lorsque toutes les implémentations de IService sont publiques:Windsor Castle: Comment enregistrer les implémentations internes
AllTypes
.Of<IService>()
.FromAssembly(GetType().Assembly)
.WithService.FirstInterface()
Par exemple:
public interface IService {}
public interface ISomeService : IService {}
public class SomeService : ISomeService {}
Résolution ISomeService renvoie une instance de SOMESERVICE.
Mais si la classe SomeService est interne, le conteneur lève une exception indiquant que ISomeService n'est pas enregistré.
Alors est-il possible d'enregistrer des implémentations internes pour les interfaces publiques?
Je ne comprends pas. Si j'utilise Component.For .ImplementedBy (), tout fonctionne bien. Ce n'est que lorsque j'utilise AllTypes que j'ai ce problème. Notez également que l'enregistrement dans ce cas est effectué dans le même assembly que l'implémentation. Ces deux faits ne devraient-ils pas suffire pour que le noyau trouve les types internes? –
shovavnik
Il semble également étrange d'appeler Castle une assemblée amicale. – shovavnik
Lorsque vous enregistrez avec Component.For vous êtes dans le contexte de l'assembly où ce code est. AllTypes.Of exécuter dans le contexte de l'assemblage de Castle. –