Ich verstehe das Konzept hinter DI, aber ich lerne gerade, was verschiedene IoC-Container können. Es scheint, dass die meisten Leute die Verwendung von IoC-Containern befürworten, um zustandslose Dienste zu verkabeln, aber was ist mit der Verwendung für zustandsbehaftete Objekte wie Entitäten?
Ob es richtig oder falsch ist, ich stopfe meine Entitäten normalerweise mit Verhalten, selbst wenn dieses Verhalten eine externe Klasse erfordert. Beispiel:
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);
}
}
Wie Sie sehen können, sind die Abhängigkeiten Konstruktor injiziert. Nun zu ein paar Fragen.
Wird es als schlechte Praxis angesehen, wenn Ihre Entitäten von externen Klassen wie dem ShipQuoter abhängig sind? Das Eliminieren dieser Abhängigkeiten scheint mich zu einer anämischen Domäne zu führen, wenn ich die Definition richtig verstehe.
Ist es eine schlechte Praxis, einen IoC-Container zu verwenden, um diese Abhängigkeiten aufzulösen und bei Bedarf eine Entität zu erstellen? Ist das möglich?
Vielen Dank für jeden Einblick.