Je commence juste avec des conteneurs IoC donc excuses si c'est une question stupide.Est-ce qu'un conteneur IoC remplace l'utilisation des usines
J'ai code comme suit dans une application
internal static class StaticDataHandlerFactory
{
public static IStaticDataHandler CreateHandler(StaticDataUpdate staticDataUpdate)
{
if (staticDataUpdate.Item is StaticDataUpdateOffice)
{
return new OfficeUpdateHandler();
}
if (staticDataUpdate.Item is StaticDataUpdateEmployee)
{
return new EmployeeUpdateHandler();
}
if (staticDataUpdate.Item == null)
{
throw new NotImplementedException(
string.Format("No static data provided"));
}
else
{
throw new NotImplementedException(
string.Format("Unimplemented static data type of {0}", staticDataUpdate.Item.GetType().FullName));
}
}
}
Il est essentiellement une usine simple qui retourne la bonne stratégie pour le traitement des données d'entrée.
Un conteneur IoC me permettrait-il d'éliminer ce type de code? C'est-à-dire: cela me permettrait-il de choisir dynamiquement une implémentation concrète à charger en fonction du type d'un paramètre d'entrée?
Ou suis-je loin du cours ici?
Parce que les médicaments génériques sont résolues au moment de la compilation - il de prendre sa décision en fonction de ce type d'élément est en cours en tant que cargaison, une décision d'exécution. – Bevan
Vous n'avez pas à résoudre les génériques lors de la compilation. Regardez Type.MakeGenericType() si vous ne me croyez pas. – dviljoen