1

我想将此解决方案改编为我现有的实用程序类 - 只是GetProperty方法。问题是,我的实用程序类不是通用类型的(即类声明没有<T>像那样的参数PropertyHelper),我暂时无法添加。

换句话说,我只希望该GetProperty方法是通用类型的,而不是整个类。

那么我需要进行哪些修改才能使该方法有效?我尝试将 T 添加到该方法的泛型类型列表中:

public static PropertyInfo GetProperty<T, TValue>(Expression<Func<T, TValue>> selector)

但是当我尝试执行以下操作时,它给了我错误:

PropertyInfo prop = MyUtilClass.GetProperty<Foo>(x => x.Bar);

显然,这是因为GetProperty期望 aT和 a TValue...

我只是希望能够像上面那样称呼它。如何?

4

1 回答 1

3

我可能不在这个基础上,但如果你想要代码的话:

PropertyInfo prop = MyUtilClass.GetProperty<Foo>(x => x.Bar);

工作(假设您正在尝试获取有关该“x.Bar”的属性信息),您只需将您的函数定义为:

public static PropertyInfo GetProperty<T>(Expression<Func<T, Object>> selector)

然后从您的函数中读取成员的名称,如

MemberExpression member = (MemberExpression)selector.Body;
String propertyName = member.Member.Name;
PropertyInfo info = typeof(T).GetProperty(propertyName, BindingFlags.Public 
            |  BindingFlags.Instance)
return info;

就像我说的,我可能不在基地,但这似乎是你想要做的。

于 2013-02-05T19:23:36.447 回答