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コンテナを使用してこれらの依存関係を解決し、必要に応じてエンティティを構築することは悪い習慣ですか?これを行うことは可能ですか?
洞察力をありがとう。