私は静的なコンストラクタを持つ静的なクラスを持っています。私は何とかこの静的クラスにパラメータを渡す必要がありますが、私はどのように最善の方法がわかりません。 あなたは何をお勧めしますか?静的クラスコンストラクタにパラメータを渡すにはどうすればよいですか?
public static class MyClass {
static MyClass() {
DoStuff("HardCodedParameter")
}
}
私は静的なコンストラクタを持つ静的なクラスを持っています。私は何とかこの静的クラスにパラメータを渡す必要がありますが、私はどのように最善の方法がわかりません。 あなたは何をお勧めしますか?静的クラスコンストラクタにパラメータを渡すにはどうすればよいですか?
public static class MyClass {
static MyClass() {
DoStuff("HardCodedParameter")
}
}
は静的コンストラクタを使用しますが、静的な初期化メソッドはいけない:C#ので
public class A
{
private static string ParamA { get; set; }
public static void Init(string paramA)
{
ParamA = paramA;
}
}
、静的コンストラクタは、パラメータなしで、この制限を克服するためにいくつかのアプローチがあります。 1つは私があなたの上に示唆したものです。
MSDNに従って、A static constructor is called automatically to initialize the class before the first instance is created。したがって、パラメータを送信することはできません。
CLRは静的コンストラクタを呼び出す必要があります。どのパラメータを渡すべきか、どのように知っていますか?
静的コンストラクタを使用しないでください。
ここでは、あなたの要件の回避策です。静的コンストラクタは、アクセス修飾子を取るかのパラメータを持っていない
public class StaticClass
{
private int bar;
private static StaticClass _foo;
private StaticClass() {}
static StaticClass Create(int initialBar)
{
_foo = new StaticClass();
_foo.bar = initialBar;
return _foo;
}
}
静的コンストラクタは次の性質を持っています。最初のインスタンスが作成される前にクラスを初期化するか、 静的メンバーが参照される前に、静的コンストラクターが自動的に呼び出されて に呼び出されます。
"HardCodedParameter"はハードコーディングされていることを意味しますが、定数を使用できます。
public static class YoursClass
{
public const string AnotherHardCodedParam = "Foo";
}
public static class MyClass
{
private const string HardCodedParam = "FooBar";
static MyClass()
{
DoStuff(MyClass.HardCodedParam);
DoStuff(YoursClass.AnotherHardCodedParam);
}
}
また、静的読み取り専用プロパティを使用することもできます。
あなたはたぶん間違った理由でそれを 'static'にしました。再設計。 –
最初の質問は確かです:なぜこのクラスは静的ですか?まれにそれはすべきです。 –