2009-11-18 5 views
0

J'ai actuellement l'enregistrement ci-dessous mis en placeenregistrement automatique du château de Windsor

private static void AddFrameworkComponentsTo(IWindsorContainer container) 
{ 
    container.AddComponent<ITypeConverter, TypeConversionFacade>(); 
    container.AddComponent<Framework.Conversion.ITypeConverter<string, int>, StringConverter>(); 
    container.AddComponent<Framework.Conversion.ITypeConverter<string, decimal>, StringConverter>(); 
    container.AddComponent<Framework.Conversion.ITypeConverter<string, DateTime>, StringConverter>(); 
} 

Quelle est la meilleure façon d'éviter d'avoir à enregistrer chaque interface au même composant? Comme vous pouvez le voir, ma classe "StringConverter" implémente plusieurs interfaces différentes, et la liste est susceptible de croître.

Modifier Je viens juste de réaliser que le précède ne fonctionne même pas parce que la clé se plaint, et il fallait changer ci-après:

container.AddComponent<Framework.Conversion.ITypeConverter<string, int>, StringConverter>("ITypeConverter<string, int>"); 
container.AddComponent<Framework.Conversion.ITypeConverter<string, decimal>, StringConverter>("ITypeConverter<string, decimal>"); 
container.AddComponent<Framework.Conversion.ITypeConverter<string, DateTime>, StringConverter>("ITypeConverter<string, DateTime>"); 

Quelle est la meilleure façon de gérer cela?

+0

Le code ci-dessus devrait fonctionner correctement, quelle exception voyez-vous à propos de la clé? quelle version de Windsor utilisez-vous? –

+0

"Il ya un composant déjà enregistré pour la clé donnée MyCompany.Framework.Conversion.StringConverter" –

+0

ahh, juste ..... –

Répondre

3

Que diriez-vous:

container.Register(Component.For(typeof(StringConverter).GetInterfaces()) 
          .ImplementedBy(typeof(StringConverter))); 

Voir la fluent API wiki pour plus d'informations sur l'enregistrement couramment.

+0

merci Mausch qui a fonctionné ... souhaite que je pourrais obtenir mon entendu autour de la syntaxe d'enregistrement, le problème est Je ne m'en sers pas assez. –

Questions connexes