XORveR.com の日記

XORveR.com の公式ブログです。

Linqのクエリ式を使ったプロパティ名の記述の、ひどい使い方について

まえがき

プロパティ名の記述をクエリ式でタイプセーフに行う手法*1*2はもう有名*3です。

しかしコーディングしていて、はたと困りました。

困ったこと

スタティックなプロパティ(なんて使うなよ!)をどうやってタイプセーフに書けばいいのん?

現状認識

まずは今の実装の説明から。

        public static string PropertyName<TObj, TProp>(
            this TObj instance, Expression<Func<TObj, TProp>> pne
        ) {
            return ((MemberExpression)((LambdaExpression)pne).Body).Member.Name;
        }

こんな感じでなんの工夫もなく、元記事をパクっています。これを、やはり何の変哲もなく

Texts.PropertyName(o => o.CurrentSettingFolder)

とかやりたいわけです。

ええ、Texts の CurrentSettingFolder が staticでさえなければ。

ひどい使い方

anyObject.PropertyName(o => Texts.CurrentSettingFolder)

これで解決!ォィ


では!