1

2 つのプロジェクトとポータブル ライブラリがあります。両方のプロジェクトがこのライブラリを参照しています。ライブラリが 2 つのプロジェクトのそれぞれに対してメソッドの 2 つの異なる実装を提供できる方法はありますか?

たとえば、プロジェクトは Server と Client で、ライブラリには SendItem というメソッドを持つクラスがあります。

サーバーの SendItem の実装:

Send(ID);
Send(Name);
Send(Price);

SendItem のクライアントの実装:

Send(ID); //Server will retrieve rest of information from database

このメソッドは多くのクラスによって呼び出され、物事が醜く複雑になるため、どのプロジェクトがメソッドを呼び出しているかを示す追加のパラメーターを使用したくありません。コンパイル条件を使用してこれを行う方法はありますか? (ライブラリを参照しているプロジェクトごとにライブラリを複数回コンパイルできますか?)。

コンパイル条件を使用してこれを達成できない場合、他のことを台無しにすることなくこれを行うクリーンな方法はありますか?

4

2 に答える 2

1

サービス ロケーターまたは制御の反転 (IoC) パターンを調べます。ダニエルは、これをポータブルライブラリに適用する方法についてかなり良い記事を書いています。libraries-work-for-you.aspx

于 2013-08-07T23:49:51.417 に答える
0

C/C++ で行われる方法と同様に、C# プリプロセッサ ディレクティブを使用してこのようなことを行うことができますが、この方法で記述されたコードは保守が難しく、時間の経過とともに脆弱になります。次のようにコードを乱雑にするよりも、いくつかの異なる関数を作成する方がよいでしょう。

#if (ANYTHING)
  Console.WriteLine("ANYTHING is defined");
#else
  Console.WriteLine("ANYTHING is NOT defined");
#endif

あなたはアイデアを得る。

MSFT プリプロセッサ情報への参照は次のとおりです 。 http://msdn.microsoft.com/en-us/library/ed8yd1ha(v=vs.71).aspx

于 2013-07-20T12:48:31.520 に答える