この未熟者(可変個引数って便利?)
こんなカスタム属性クラスがあって
public FooAttribute : Attribute
{
string arrayParams;
public FooAttribute(string arrayParam)
{
this.arrayParams = arrayParams;
}
}
配列のパラメタをフィールドに渡さなくてはならないので、今までは以下のように真っ当に配列で記述していたのだが、
[Foo(new string[]{"Foo", "Bar"})]
これってコンストラクタのパラメタを可変(params)にするだけで
public FooAttribute(params string[] arrayParam) 〜
[Foo("Foo", "Bar")]
とすっきり書けることに今気が付いた。
同じように配列を引数に取るコンストラクタやメソッドって結構多いので、全部見直しだこりゃ。
追記:
とはいうものの、コンストラクタを含むメソッドで単一のstringを引数に持つオーバロードがある場合は正しく動作しなくなるんだな。(当たり前)
public FooAttribute(string param) public FooAttribute(params string[] arrayParam) 〜 [Foo("Foo")]
引数の個数が変わることで処理内容が変わる場合はこの手は使えない。というか、使う側で混乱する場合は絶対に使っちゃ駄目だ。