2017-08-03 12 views
0

のは、私は拡張パラメータとして文字列を取得します。この方法であるとしましょう:は、拡張メソッドからプロパティ名を取得することは可能です

private static List<string> ValidationErrors = new List<string>(); 

private static void ErrorCheck<T>(this string str) 
{ 
    if (string.IsNullOrEmpty(str)) 
    { 
     // This just returns "str"                  
     // Instead of property name (see "How I use" section") 
     ValidationErrors.Add(typeof(T).Namespace + "[" + nameof(str) + "]"); 
    } 
} 

をそして、これは私がそれを使用する方法です:

Car.Color.ErrorCheck<Car>(); 

CarオブジェクトのColorは文字列プロパティです。だから私が望むのは、私の拡張メソッドで "str"の代わりに "Color"を得ることです。

どのように私はこれを達成することができましたか?

+1

'Car.Color.ErrorCheck ()'あなたがタイプミスマッチができたという事実を(例えば、 'Car.Color.ErrorCheck ()')必要がありますあなたの現在のシステムがあることを手掛かりあなたを中欠陥がある。文字列をパラメータとして渡すと、その文字列の元の場所を知る方法がありません(あなたの場合は 'Car.Color')。 (Car.ErrorCheck(x => x.Color)) – Flater

+0

ええ、ありがとう!あなたのコメントの前にそれを考えなかった。スジは通ってるようだ。 –

答えて

2

不可能です。 Expression<...>とラムダを使用して

+1

質問を再度開いたのはなぜですか?それは有効な複製でした。あなた自身に答えて、重複したターゲットをリンクするだけですか? –

+2

@PatrickHofmanその正確な複製はありません。 'nameof'アプローチも同様です。 –

+2

次に、それを重複したターゲットに追加して、質問を再度開いてはいけません。 –

関連する問題