Symbol クラス

以前、C# でシンボルを実現する方法が流行しました。

でも、なんで拡張メソッドなんでしょうね?次のようなメソッドでもいい気がします。

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));
    }
    // ...省略...
}

こっちがシンプル。

まあ、タイプ量は大して変わらないので、好みの問題かもしれませんが。