challenge メソッド名一覧の表示

リフレクション系のお題の続編です。

「ある与えられたオブジェクトtargetのメソッドのうち、 "test_"で始まるものをすべて呼びだす」というコードを書いてください。 引数に関しては都合のいいように仮定して構いません(全部0個、など)。

メソッドという概念がない言語の場合は、 「複数の関数への参照を持っているようなオブジェクト(たとえばパッケージとかモジュールとか)から"test_"で始まる関数をすべて呼び出す」と読み替えても構いません。

Posted feedbacks - C#

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
using System;
using System.Reflection;
class Program
{
  class Test
  {
    void test_1() { Console.WriteLine("1"); }
    static void test_2() { Console.WriteLine("2"); }
  }
  static void Main()
  {
    CallTest(new Test());
  }
  static void CallTest(object o)
  {
    foreach (MethodInfo mi in o.GetType().GetMethods(
      BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static))
      if (mi.Name.StartsWith("test_")) mi.Invoke(o, new object[0]);
  }
}

Index

Feed

Other

Link

Pathtraq

loading...