次のように宣言されたクラスがあるとします。
public class ExampleClass
{
public Action<int> Do { get; set; }
public ExampleClass()
{
}
public void FuncA(int n)
{
//irrelevant code here
}
public void FuncB(int n)
{
//other irrelevant code here
}
}
このクラスをこんな風に使えるようになりたい
ExampleClass excl = new ExampleClass() { Do = FuncA }
また
ExampleClass excl = new ExampleClass() { Do = excl.FuncA }
また
ExampleClass excl = new ExampleClass() { Do = ExampleClass.FuncA }
そこで2番目のオプションをコンパイルできますが、"Delegate to an instance method cannot have null 'this'."
そのコードをヒットすると例外が発生します。FuncAは静的ではないため、3番目のものは意味がありません。
私の実際のコードでは、10〜15の異なる関数が関連付けられる可能性があり、いつでもそれらを追加または削除できるため、大きなスイッチやit-elseステートメントは必要ありません。 。さらに、クラスをインスタンス化するときに「Do」に値を割り当てることができると非常に便利です。
間違った構文を使用していますか?クラスを作成して1行でアクションを割り当てるより良い方法はありますか?巨大なswitchステートメントを管理する必要がありますか?