J'ai écrit un petit exemple pour apprendre l'IoC et l'DI par moi-même. J'ai une question simple:Inversion de contrôle et injection de dépendances - J'ai besoin de vos conseils
Comment vous instancier l'ouvrier non qualifié dans mon exemple/
Comment puis-je swich entre les 2 candidats injectent suivants ?:
kernal.Bind<IRepair>().To<Employee>();
kernal.Bind<IRepair>().To<UnskilledWorker>()
Je suis un peu peu confus au moment ...
class Program
{
static void Main(string[] args)
{
IWorkShop instance = GetWorkShop();
instance.StartToRepair();
Console.ReadLine();
}
private static IWorkShop GetWorkShop()
{
Ninject.IKernel kernal = new StandardKernel();
kernal.Bind<IWorkShop>().To<WorkShop>();
kernal.Bind<IRepair>().To<Employee>();
var instance = kernal.Get<IWorkShop>();
return instance;
}
}
public class WorkShop : IWorkShop
{
private IRepair _repair;
public WorkShop(IRepair repair)
{
_repair = repair;
}
public void StartToRepair()
{
_repair.RepairItNow();
}
}
interface IWorkShop
{
void StartToRepair();
}
public class Employee : IRepair
{
public void RepairItNow()
{
Console.WriteLine("Employee starts working.");
}
}
public class UnskilledWorker : IRepair
{
public void RepairItNow()
{
Console.WriteLine("Unskilled worker starts working.");
}
}
public interface IRepair
{
void RepairItNow();
}
}
Bonjour Jason, merci pour votre réponse. J'ai compris, qu'il est possible d'appeler kernal.GetAll(). Vous pouvez donc les enregistrer et obtenir un IEnumerable de toutes les liaisons. Factory Pattern pourrait aussi être une solution, c'est vrai. –
Developer