1

オブジェクトをコントロールとグリッドにデータバインドする場合、プロパティ名が魔法の文字列になるのが嫌だったので、次のような非常に単純なメソッドを作成しました。

public static string GetPropertyName<PropertyType>(Expression<Func<T, PropertyType>> expressionForProperty)
    {
        MemberExpression expression = expressionForProperty.Body as MemberExpression;
        return expression.Member.Name;
    }

これにより、次のようなコードを使用できます。

Product.GetPropertyName(m => m.Name)

「名前」を返す。

これは、基本的なオブジェクトに対して完全に機能します。ただし、メソッド呼び出しを次のように変更すると:

Product.GetPropertyName(m => m.ProductCategory.Name)

これも「名前」を返します。しかし、データバインディングが機能するためには、「ProductCategory.Name」を返す必要があります。メソッド「GetPropertyName」を変更してこれに到達する方法はありますか?

考えられる回避策は、次のようにすることです。

string test = Product.GetPropertyName(p => p.ProductCategory) + "." + ProductCategory.GetPropertyName(pc => pc.Name)

ただし、これはきちんとした解決策ではありません。

4

2 に答える 2