5

開発するアプリケーションで定期的に使用するすべてのカスタム クラスを含むクラス ライブラリを作成しています。このライブラリはコンパイルされ、各アプリケーションの参照として追加され、ライブラリ内に含まれるカスタム クラスを呼び出すことができます。

私のライブラリのカスタム クラスには複数の継承層が含まれていますが、最終的にはすべて、私が「アルファ」と呼ぶ基本クラスに起源を持っています。そのクラスでは、接続文字列も保持して、ライブラリ内の他のすべてのクラスに継承されるようにします。クラスの多くは、ADO を使用して SQL データベースと通信するため、すべてのクラスで接続文字列を使用できるようにすることが不可欠です。

私が抱えている問題は、クラス ライブラリを使用する各アプリケーションが独自のデータベースを持っているため、それぞれに固有の接続文字列が必要なことです。したがって、接続文字列をクラス ライブラリに含めることはできません。これは、クラス ライブラリを使用するすべてのアプリケーションが同じ SQL データベースを検索することになるためです。ただし、'Alpha' クラスから接続文字列を削除すると、ADO.NET を使用するすべてのメソッドがその接続文字列を探しているため、クラス ライブラリはコンパイルされません。

ニワトリが先か卵が先かのようなシナリオです。

つまり、クラス ライブラリをコンパイルするには、Alpha クラスに接続文字列が必要です。つまり、接続文字列をクラス ライブラリに含めることはできません。アプリケーションごとに一意にする必要があるためです。

これに対して私が考えることができる唯一の解決策は、ADO を使用するクラス ライブラリ内のすべてのメソッドに、アプリケーション コードから渡すことができる接続文字列を保持するパラメーターを与えることです。しかし、これはこの問題を解決するための非常に簡潔な方法とは思えません。

理想的には、接続文字列を格納するための各アプリケーション内の単一の場所が必要です。次に、クラス ライブラリを作成する時点ではその場所を使用できない場合でも、クラス ライブラリ内のこの場所を参照する何らかの方法が必要です (個々のアプリケーション内にあるため)。

4

2 に答える 2