DOBON.NET DOBON.NETプログラミング掲示板過去ログ

C#で#defineをまとめて定義するには?

環境/言語:[XP C#2005 Framework2.0]
分類:[.NET]

2010/03/23(Tue) 17:44:15 編集(投稿者)

C#での#defineの使い方について質問があります。

以下のように、#defineで定義したい内容が複数ファイルにまたがるような場合、
C#では、ファイルごとに個別で#defineで定義していくしかないのでしょうか?

(以下、コーディングイメージ)
=====================================
<file1.cs>
#define TEST1

public class A
{
method1()
{
・・・
#if TEST1
テスト用コード
#endif
・・・
}
}

<file2.cs>
#define TEST1

public class B
{
method1()
{
・・・
#if TEST1
テスト用コード
#endif
・・・
}
}
=====================================


「プロジェクトのプロパティ」で「条件付コンパイルシンボル」として
列挙できるようではあるのですが、この方法は
・コメントが書けない
・編集、検索がしにくい
等の理由から、なるべく避けたいです


理想は、
1ファイルに#defineの情報をまとめて書いておき、
ファイルごとにそのファイルを参照できるような
構造にしたいです。
(C言語の#includeみたいな呼び出し方)


(以下、コーディングイメージ)
=====================================
<file_Common.h>
#define TEST1 //xxxのためのテスト
#define TEST2 //xxxのためのテスト
#define TEST3 //xxxのためのテスト

<file1.cs>
#include "file_Common.h"

<file2.cs>
#include "file_Common.h"
=====================================

以上、
#defineよりも良い方法があるかどうかも含め、
教えていただけませんでしょうか。
C# にはヘッダーファイルという考え方はありません。
お望みのことをそのまま実現することはできないと思われます。

考えられる手としては、いくつか利用する可能性のあるものは構成に追加して使い分けることで運用し、それぞれの構成について説明するドキュメントを書くぐらいでしょうか。

構成例
DebugTestAll DebugTest1 DebugTest1And2 など
返信ありがとうございます

やはり#defineのようなプリプロセッサ命令で
プロジェクト単位で定義するのは無理ですか・・・

プロジェクト単位の定義をしようと思ったら
プロジェクトのプロパティから行うしかないのですね。

確かにテストシナリオ毎に構成を作っていくのが、
やりたいことに一番近いのかもしれません。
一応、解決済みに付けておきます。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板