3

SQL 接続を介していくつかのユーティリティ作業を行う一連のメソッドがあり、これまでこれらはプロジェクトからプロジェクトにコピーされてきました。しかし、時間が経つにつれてプロジェクトの数が増え、バグを見つけたり、更新する必要がある場合に備えて、これらのメソッドを同期しておく必要があります。

私は、SQLアクセスクラスが部分クラスであり、一部がプロジェクトに固有で、特定のデータベースのラッパーが含まれている状態にすることができました。2 番目の部分は一般的なもので、すべてのプロジェクト固有のデータベースで使用されるメソッドが含まれています。

問題は、「ユーティリティ」クラスが 8 つのプロジェクトにコピーされ、内容は同じですが名前空間が異なることです。C/C++ では、必要な場所にファイルの内容を #include するだけだったので、単純でした。C# で何をすればよいですか?

4

2 に答える 2

4

クラスを分離して、共通プロジェクトで共通コードをすべて含む完全なクラスを作成できるようにします。共通インターフェイスを使用して、プロジェクト固有の機能のビットを表し、各プロジェクトでそのインターフェイスを実装し、必要に応じてインターフェイスのインスタンスを共通コードに渡します。

于 2010-04-23T06:51:49.830 に答える
1

Jon が言うように、ライブラリ アセンブリは良い考えです。

アセンブリ参照が要件を満たしていない場合があるため、ライブラリ アセンブリを作成できない場合は、Visual Studio で見過ごされがちな機能を使用して、既存のファイルをリンクとして追加することができます。

これにより、すべてのプロジェクトで使用できるファイルに部分クラスの共通部分を維持できます。

唯一の制限は、相対パスを使用してファイルを参照することです。

この戦略で私が経験した唯一の問題は、オープン ソースの Mercurial scc プロバイダーに関するものです。リンクされたファイルをプロジェクトから削除すると、基になるファイルが削除されます。非常に面倒ですが、これは問題にならないかもしれません。

更新: VS Mercurial SCCのリンク ファイルのバグは、次のリリースで修正される予定です。

于 2010-04-23T07:17:43.560 に答える