Entiendo el concepto detrás de DI, pero estoy aprendiendo lo que pueden hacer los diferentes contenedores de IoC. Parece que la mayoría de la gente aboga por el uso de contenedores de IoC para conectar servicios sin estado, pero ¿qué pasa con su uso para objetos con estado como entidades?
Ya sea correcto o incorrecto, normalmente lleno mis entidades con comportamiento, incluso si ese comportamiento requiere una clase externa. Ejemplo:
public class Order : IOrder
{
private string _ShipAddress;
private IShipQuoter _ShipQuoter;
public Order(IOrderData OrderData, IShipQuoter ShipQuoter)
{
// OrderData comes from a repository and has the data needed
// to construct order
_ShipAddress = OrderData.ShipAddress; // etc.
_ShipQuoter = ShipQuoter;
}
private decimal GetShippingRate()
{
return _ShipQuoter.GetRate(this);
}
}
Como puede ver, las dependencias son Constructor Injected. Ahora para un par de preguntas.
¿Se considera una mala práctica que sus entidades dependan de clases externas como ShipQuoter? Eliminar estas dependencias parece llevarme hacia un dominio anémico, si entiendo correctamente la definición.
¿Es una mala práctica utilizar un contenedor de IoC para resolver estas dependencias y construir una entidad cuando sea necesario? ¿Es posible hacer esto?
Gracias por cualquier información.