0

#if コンパイラ ディレクティブを使用して、クラスのプロパティを省略できますか?

共有プロジェクトを使用する 2 つのプロジェクトがあり、共有クラスにいくつかのプロパティを追加して、もう一方のクラスに見せたくない場合があります。

MYSYMBOL などのプロジェクトに条件付きコンパイル シンボルを追加しようとしました。

そして、私のクラスでこれを行う:

#if MYSYMBOL

public string MySpecialProperty { get; set; }

#endif

それはコンパイルされますが、どちらのプロジェクトも MySpecialProperty を見ることができませんが、明らかに、MYSYMBOL が定義されたプロジェクトがこのプロパティにアクセスできることを望んでいます...

4

1 に答える 1

0

MYSYMBOLプロパティを表示するには、コンパイル プロジェクトで定義する必要があります。したがって、共通ライブラリ プロジェクトがある場合は、そこで定義することも、しないこともできます。したがって、コンパイルされたライブラリには、ライブラリを使用する使用プロジェクトに関係なく、常にプロパティが含まれているか含まれていないかのいずれかになります。

別の動作が必要な場合は、両方の消費プロジェクトでクラスをコンパイルする必要があります。同じソース ファイルを両方のプロジェクトに追加し、異なる定義でコンパイルできます。

于 2013-10-04T11:08:10.703 に答える