アプリケーションがあります。このアプリケーションは、インターフェースを使用してデータベースにアクセスします。このインターフェースは、多くのクラスで実装できます。たとえば、1つはEF 4.4を使用しますが、他のクラスはより効率的なEF5を使用できます。将来的には、非同期メソッドを使用するEF6を使用する予定です。この例では、すべてのメソッドがEFを使用していますが、おそらく他のオプションを他の方法で使用することもできます。
アプリケーションはインターフェイスを使用して一度コーディングされ、構成ファイルに従って、いずれかの実装を使用するため、クラスのインスタンス化に新しいオプションを追加するために、コンストラクターという1つの場所でコードを変更するだけで済みます。それはインターフェースに割り当てられます。
現時点では、クラスのすべてのメソッドがそうではありませんasync
が、将来的にEF6を使用する場合は非同期メソッドを使用したいので、EF6を使用してインターフェイスを実装するクラスができるかどうかはわかりません。メソッドを使用しasync
ます。
EF6の非同期メソッドでは、async / awiatパターンを使用するため、クラスのメソッドではasync属性を使用する必要があります。これによりawait
、EF6のasyncメソッドを呼び出すときにキーワードを使用できます。
しかし、このクラスは、初めて同期メソッド用のインターフェイスを実装できますか?
メインアプリケーションで、コードを変更せずに多くの実装を使用できる方法はありますか?一部の実装は非同期メソッドを使用しますが、他の実装は同期メソッドを使用します。