文字列に頼らないリフレクション
- C#でシンボルを実現する
- Expressionを使ってプロパティ名を文字列ではなくてラムダ式で与える方法
- タイプセーフにINotifyPropertyChangedインターフェースのPropertyChangedイベントを発行する
- 拡張メソッド+ラムダ式でメンバ名をエレガントに取得
なんかまた最近流行っぽいので.
拙作 Achiral では,ConstructorInfo や PropertyInfo を以下のように文字列に頼らずに取得可能です.
using System; using System.Linq; using System.Reflection; using Achiral; using Achiral.Extension; static class Program { static void Main(string[] args) { var member_info_list = new MemberInfo[] { Make.ConstructorInfo(() => new Version()), Make.PropertyInfo(() => Environment.CommandLine.Length), Make.MethodInfo(() => Console.WriteLine(default(int))), }; member_info_list.ConsoleWriteLine(); } }
うちの日記での初出は『日本語識別子,Member Renaming,strong-typed reflection - NyaRuRuの日記』あたりですかね.私も当時この手法を知って結構感動した記憶があります.