TestRepository
私のアプリケーションでは、生データ アクセス ( 、など)SqlRepository
を行うリポジトリを使用したいと考えています。FlatFileRepository
このようなリポジトリはアプリケーションのランタイム全体で使用されるため、それを静的クラスにすることは賢明なことのように思えました。
SqlRepository.GetTheThingById(5);
常に再生成する必要はありません。リポジトリを交換可能にしたいので、共通のインターフェースを実装する必要があります: IRepository
. しかし、そうしようとすると、次のようになります。
静的クラスはインターフェースを実装できません
なぜ彼らはできないのですか?では、デザインを変更することをどのように提案しますか? 使用できるパターンはありますか?
更新
5 年後: この質問は 2 万回以上訪れ、リポジトリ パターンの欠点について学び、IoC について学び、私の質問が不十分に定式化されていることに気付きました。
インターフェイスの C# 仕様が何であるかを実際に尋ねたわけではなく、なぜこの特定の方法で故意に私を制限していたのかということです。
実際の答えは、インスタンスまたは型でメソッドを呼び出すための構文が異なるということです。しかし、質問は閉じられています。