1

Visual Studio 2008 に C# .NET Compact Framework 3.5 モバイル プロジェクトがあります。プログラムはバーコード スキャナーを使用し、2 種類の Windows Mobile デバイスで動作します (どちらも独自の SDK を使用してバーコード スキャナーを操作します)。条件付きでスキャナー SDK SDK DLL ファイルへの参照を追加するにはどうすればよいですか? つまり、HARDWARE1 構成用にコンパイルする場合、HARDWARE2-SCANNER-SDK.DLL への参照を追加したくありません。

4

2 に答える 2

1

app.config ファイルで読み込む DLL を指定し、Assembly.Loadメソッドを使用して適切なライブラリ (ライブラリ) を読み込むことができます。

それが簡単な答えです。ただし、これを実際に機能させるには、共通の API を共有するいくつかの「ラッパー」アセンブリを (別のライブラリにも) 作成する必要がある場合があります。これにより、最終的なアプリケーションは、スキャナー情報の取得元を気にする必要がなくなります。どのハードウェアが使用されているかを認識しない必要があります。

ところで:これはすべて、クラスレベルではなくモジュールではありますが、依存性注入の概念に関連しています。開始するためのいくつかのリソースを次に示します。

http://msdn.microsoft.com/en-us/magazine/cc163739.aspx http://en.wikipedia.org/wiki/Dependency_injection

于 2010-03-05T15:50:21.447 に答える
0

なぜあなたはする必要があるのですか?スキャナ アクセスにインターフェイスを使用する場合、1 つの実装は 1 つの SDK を参照し、もう 1 つの実装は他の SDK を参照します。

実行時に、実際に作成したクラスは、参照されたアセンブリを読み込もうとします。インスタンス化する前にハードウェアを検出している場合は、適切な SDK 参照が読み込まれます。基本的に、存在しない SDK を使用しない場合、それをロードしようとすることはありません。

これが問題になる唯一の理由は、2 つの SDK が同じクラス名を使用している場合です。その場合、私はまだインターフェイスベースを使用しますが、インターフェイスの実装ごとに異なる DLL を使用し、それらのプロジェクトは適切な SDK を参照します。

于 2010-03-05T16:08:56.273 に答える