Я розумію концепцію DI, але я лише вивчаю, що можуть робити різні контейнери IoC. Здається, що більшість людей виступають за використання контейнерів IoC для підключення служб без громадянства, але як щодо їх використання для таких об'єктів, як сутності?
Незалежно від того, правильно це чи неправильно, я зазвичай наповнюю свої сутності поведінкою, навіть якщо ця поведінка вимагає зовнішнього класу. Приклад:
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);
}
}
Як бачите, залежності вводяться конструктором. Тепер на пару питань.
Чи вважається поганою практикою, коли ваші сутності залежать від зовнішніх класів, таких як ShipQuoter? Усунення цих залежностей, здається, веде мене до анемічного домену, якщо я правильно розумію це визначення.
Чи погана практика використовувати контейнер IoC для вирішення цих залежностей та побудови сутності за потреби? Чи можна це зробити?
Дякуємо за будь-яке розуміння.