2014年06月08日

C#でメソッドの一覧と呼び出し

   このエントリーをはてなブックマークに追加 Clip to Evernote
どう書く?orgに感謝を込めて」シリーズ その14

■問題 (出題者:にしお さん)

「ある与えられたオブジェクトtargetのメソッドのうち、 "test_"で始まるものをすべて呼びだす」というコードを書いてください。 引数に関しては都合のいいように仮定して構いません(全部0個、など)。
 メソッドという概念がない言語の場合は、 「複数の関数への参照を持っているようなオブジェクト(たとえばパッケージとかモジュールとか)から"test_"で始まる関数をすべて呼び出す」と読み替えても構いません。


.NETなので、Test_ (先頭大文字)で始まるメソッドとしました。 この例では、面倒なので、引き数は0個としています。

■C#で書いたコード

using System; using System.Linq; namespace Doukaku.Org { class Program { static void Main(string[] args) { // Sample クラスの Test_xxxx メソッドをすべて呼び出す。 Sample sample = new Sample(); sample.GetType().GetMethods() .Where(m => m.Name.StartsWith("Test_")) .ForEach(m => m.Invoke(sample, null)); } } class Sample { public void Test_Bar() { Console.WriteLine("Test_Bar"); } public void Test_Foo() { Console.WriteLine("Test_Foo"); } public void Test_Baz() { Console.WriteLine("Test_Baz"); } public void Hoge() { Console.WriteLine("Hoge"); } } }


 

この記事へのトラックバックURL

http://trackback.blogsys.jp/livedoor/gushwell/52370109