IoC、インターフェイス、およびイベントを調整するのに非常に苦労しています。本を書かずにこれを説明できるか見てみましょう。
私はIoCを始めたばかりで、Springで遊んでいます。EF などよりもずっと前に構築された単純なデータ層があります。クラスの 1 つは、いくつかのメソッドとイベントを持つ DBProcedure です。
「実際の」DBProcedure クラスが実装する IDBProcedure インターフェイスを作成しました。TDD のやり方では、「実際の」DBProcedure クラスを、テスト用に同じインターフェイスを実装する別のクラスに交換できるようにしたいと考えています。私にとって、これは IDBProcedure インターフェースが私のデータレイヤーとは異なる名前空間/プロジェクトで定義されるべきであることを意味しますよね?
ただし、DBProcedure はいくつかのイベントを発生させることができ、それらのイベントはカスタム EventArgs 派生クラスを提供します。これは、EventArgs クラスもデータ層の外で定義する必要があるということですか? インターフェイスを機能させるためのように見えますが、データ層が広がるため、それは悪いように思えますか?
一方、私は間違った考えを持っているかもしれません.「実際の」クラスを使用していなくても、インターフェイスとイベントの定義を取得するためにテストしているときに、データ層の名前空間を含めても大丈夫ですか?