ac#プログラムの入力がメソッドの呼び出しを制御できるようにするにはどうすればよいでしょうか。例えば:
デリゲートタイプがあると仮定します。
delegate void WriteMe();
そして、いくつかの方法:
void PrintInt() { Console.WriteLine(10); }
void PrintString() { Console.WriteLine("Hello world."); }
そして、入力が呼び出し順序を選択できるようにします。
public static WriteMe ProcessInvocationInput(int[] val) {
WriteMe d = null;
foreach (int i in val) {
switch (i) {
case 1: d += PrintInt; break;
case 2: d += PrintString; break;
}
}
}
そしてそれをすべて呼び出すコード:
static void Main(string args[]) {
int[] values = {1, 2, 3}; // Obviously this array could be filled
// from actual input (args, file, wherever)
WriteMe d = ProcessInvocationInput(values);
d();
}
私がこの質問を投稿する理由は、単純なアイデアのように見えるものを実装するのはかなり複雑に見えるからです。この動作を実現する別の方法はリフレクションAPIを使用することですが、それはさらに複雑になります。