Customer
クラスがあり、インスタンスがLoad()
のクラスがあるとします。依存性注入と静的メソッドの併用
Load()
メソッドが呼び出されると、メソッドは、たとえば次のように注文の詳細を取得します。
var orders = Order.GetAll(customerId, ...);
GetAll()
Order
クラスの静的メソッドであり、入力パラメータはCustomer
クラスで定義されたフィールドです。
あなたが見ての通り、はCustomer
クラスの依存関係ですが、IOrder
を作成して静的メソッドを持つことができないので、そこに注入することはできません。
したがって、この例では依存性注入をどのように導入できますか?
GetAll()
は静的メソッドであり、そのように保つ必要があるため、インスタンスメソッドにしたくありません。
たとえば、設計でユーティリティクラスを使用しましたが、そのほとんどは静的メソッドを含んでいます。
これらのリポジトリクラスとインターフェイスはデータアクセスレイヤの一部ですか? My Orderクラスは、Orderテーブル(LINQ to SQLを使用)からマップされたビジネスエンティティです。 –
@ user133212それは、あなたの既存の関数のラッパーです。その関数が論理的にレイヤーに属するどこにでも、私はラッパーも置くでしょう。 –