Considere el siguiente código (que se ha simplificado). Tengo una clase de servicio que devuelve una lista de objetos DTO específicos que cada uno implementa su propia interfaz específica. En el código actual, estos se están poblando al iterar a través de un Dataset, ya que estoy trabajando con el código heredado.Inyección de dependencia: ¿se usa con objetos de transferencia de datos (DTO)?
Preguntas:
¿Cómo podemos crear/usar un DTO sin Newing hacia arriba o utilizando el anti-patrón Service Locator? No tiene mucho sentido componer un objeto DTO vacío en Composition Root e inyectarlo en la clase Service a través del constructor, porque en realidad estaría utilizando el DTO como una variable temporal de tipo al completar una lista.
En el código puede ver un ejemplo de cómo estoy actualizando el DTO. Pero esto no se siente mucho mejor que que si hubiera hecho que los DTO no implementaran interfaces en primer lugar. Entonces, ¿no deberían implementar interfaces entonces y por lo tanto, no usar DI con DTO?
public class Services : IServices
{
public IList<IDTO> GetDTOs()
{
...
List<IDTO> dtos = new List<IDTO>();
foreach (c in d)
{
DTO dto = new DTO();
dto.x = c.x;
dto.y = c.y;
dto.z = c.z;
dtos.Add(dto);
}
return dtos;
}
}
relacionados: http://stackoverflow.com/questions/4835046/why-not-use-an-ioc-container-to-resolve-dependencies-for-entities-business-objec –
duplicado con respuestas interesantes: http://stackoverflow.com/questions/8135894/c-sharp- dto-constructor-and-dependency-injection/8136059 # 8136059 –