以前、C# でシンボルを実現する方法が流行しました。
- C#でシンボルを実現する - 開発思考実験日記
- Expressionを使ってプロパティ名を文字列ではなくてラムダ式で与える方法
- [C#][WPF]タイプセーフにINotifyPropertyChangedインターフェースのPropertyChangedイベントを発行する
でも、なんで拡張メソッドなんでしょうね?次のようなメソッドでもいい気がします。
public static class Symbol { public string Get<T>(Expression<T> expression) { return ((MemberExpression)expression.Body).Member.Name; } }
こんな感じで使います。
public Foo GetFoo(string name) { if (name == null) { throw new ArgumentNullException( Symbol.Get(() => name)); } // ...省略... }
こっちがシンプル。
まあ、タイプ量は大して変わらないので、好みの問題かもしれませんが。