Existe-t-il un moyen d'enregistrer avec Ninject, en utilisant des conventions, toutes les classes qui implémentent une certaine interface, associée au nom de chaque classe?Ninject s'enregistrer par convention avec des noms
interface IClientCodeValidator
{
string ValidateClientCode(params IXpressionNode[] customParameters);
string ValidatorName { get; }
}
public class Client1CodeValidator: IClientCodeValidator
{
public Client1CodeValidator()
{
this.ValidatorName = "Client1";
}
}
public class Client2CodeValidator: IClientCodeValidator
{
public Client2CodeValidator()
{
this.ValidatorName = "Client2";
}
}
Bind<IClientCodeValidator>()
.To.ItsClasses()
.InSingletonScope()
.Named(*c => c.ValidatorName*); <--
Puis, plus tard
Container.Instance.Get<IClientCodeValidator>(clientName.ToUpper())
Ok, comment puis-je brancher l'usine dans le second extrait? J'ai essayé d'utiliser '.Configure (c => c.InSingletonScope(). NamedLikeFactoryMethod ((IClientCodeValidatorFactory f) => f.GetFor()' mais alors je dois fournir un paramètre à la méthode GetFor() – bdaniel7
vous connectez l'usine en tant que liaison simple: 'Bind(). ();', injectez-le dans le constructeur de la classe consommatrice, puis appelez 'GetFor' dans le code utilisateur. –