? Estoy empezando con los contenedores de IoC, así que le pido disculpas si esta es una pregunta estúpida.¿Un contenedor de IoC reemplaza el uso de las fábricas
que tienen un código como el siguiente en una aplicación
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));
}
}
}
Se trata básicamente de una fábrica simple que devuelve la estrategia correcta para el manejo de los datos de entrada.
¿Un contenedor IoC me permite eliminar código como este? Es decir: ¿me permitiría elegir dinámicamente una implementación concreta para cargar en función del tipo de parámetro de entrada?
¿O estoy fuera de curso aquí?
Debido a que los genéricos se resuelven en tiempo de compilación - que ha de tomar su decisión sobre la base de qué tipo de artículo se transporten mercancías, una decisión en tiempo de ejecución. – Bevan
No tiene que resolver genéricos en tiempo de compilación. Mira Type.MakeGenericType() si no me crees. – dviljoen