1

データベースへのアクセスを、すべて同じ基本実装から継承する接続クラスにカプセル化しています。この基本実装には、protected多くの子クラスが使用するデータベースアクセス用のLINQプロバイダーがありますが、すべてではありません。独自のプロバイダーが必要な場合もあり、通常は「デフォルト」のプロバイダーを使用できません。

この「その他の」プロバイダーは、デフォルトのプロバイダーから派生したものではありませんが(ただし、それ自体はどこにも役に立たない共通の準抽象祖先を共有します)、それぞれのクラス内でまったく同じ役割を持つため、まったく同じように使用できます。つまり、同じ構文を使用できます。キーワードを使用してそれぞれのメンバーを非表示にすることでこれを達成できましたが、newこれが良い習慣かどうかはわかりません。

一方では、そうすることで、1つしかないため、誤って間違ったものを使用することを回避できます。一方、デフォルトのプロバイダーと特定のプロバイダーに同じ名前を使用することに慣れていると、実際には特定のプロバイダーの実装を忘れて、ここで使用するのが正しくないプロバイダーで作業することになります。したがって、デフォルトのものに適切な名前を付けることは理にかなっているかもしれません。特定の接続クラスを開発する人は誰でも、特定のプロバイダーをいつ使用する必要があるかを知っており、それに到達するためのコードを作成する必要があることを思い出してください。

もっともらしい理由はどれですか?私は今、後者に少し傾いています。

4

1 に答える 1

2

newキーワードは、ほとんどの場合、悪い考えです。これは、他に選択肢がない場合の「最後の手段」の機能の 1 つであり、この場合、間違いなく他の選択肢があります。

2 つのプロバイダーのセマンティクス/API は異なりますか?それとも使用法はまったく同じですか? 後者の場合は、アダプター パターンILinqProviderAdapterを調べて、必要に応じてオーバーライドされた型 (定義して実装する) の単純な仮想プロパティとしてプロパティを実装することをお勧めします。

于 2012-06-17T01:55:41.973 に答える