WCFを初めて使用しています。プロジェクトの定数はどこに配置しますか?WCFプロジェクトで定数を配置する場所
私は通常、すべての静的定数を保持する名前空間を持つファイルを作成します。しかし、サービスが呼び出しごとまたはセッションごとの場合、WCFに静的変数を設定することはできません。私は自分のコードに魔法の数字を必要としません、私はプロジェクトを通して共有することができる定数が欲しいです。
ありがとうございました
WCFを初めて使用しています。プロジェクトの定数はどこに配置しますか?WCFプロジェクトで定数を配置する場所
私は通常、すべての静的定数を保持する名前空間を持つファイルを作成します。しかし、サービスが呼び出しごとまたはセッションごとの場合、WCFに静的変数を設定することはできません。私は自分のコードに魔法の数字を必要としません、私はプロジェクトを通して共有することができる定数が欲しいです。
ありがとうございました
彼らは本当に定数である場合は、あなただけのconst
キーワードと関連ファイルに入れます。スレッドセーフなので、定数は変更できません。
変数の値を変更する必要がある場合は、定数ではなく、誰が変更できるか考える必要があります。それがユーザーの責任であれば、変数を.configファイルに入れてそこから読み取ることができます。コードが変数を変更する必要がある場合、値を読み取ったり変更したりするためにいくつかのロック機構を使用することができます(ロック、ReadWriteLockなど)。
彼はこの値を 'out(side)project'で定数を使って共有したいのですが、compilertimeで評価されているためです。これにより、値を変更した場合、それらの定数に依存するすべてのアセンブリを再コンパイルする必要があります。 – Kolja
@Kolja正解です。 'const'を使うと、値を変更する必要があるときはいつでも再コンパイルが強制されます。 OPの要件に基づいて、XML設定や設定ファイルのようなもっと柔軟な方法がここに行く方法です。 – Yuck
@Yuck私は設定オプションを追加しないで、マジックナンバーを避けたいという質問を読んでいます。 IMHOの設定は、このための残虐行為です。 – Kolja
彼らはを再コンパイルせずに変更することはできませんことですラップマジックナンバーをconst
たり、クラスを使用して問題。設定ファイルを使用したいとします。これらはセットアップするのに直感的ではありませんので、次の手順に従ってください。プロジェクトを右クリックし、プロパティを選択します。プロジェクトにSettings.settings
ファイルを作成しますハイパーリンクをクリックして
:次に設定タブを見つけます。その後、デザイナーの値を編集することができます(それはWCFのプロジェクトなので、あなたのケースでは)
値は、あなたのapp.config
またはweb.config
に格納されています。
静的読み取り専用プロパティを持つ単純静的クラスが機能するはずです。
Public static class Foo
{
public static int Bar { get { return 1337; }}
}
なぜあなたは 'const'を使用できませんか?彼らが呼び出しごとまたはセッションを変更すると、実際には定数ではありません。 –
あなたの値を保持しているそのクラスの静的な読み取り専用プロパティの問題は何ですか? – Kolja