我想将这个解决方案调整到我现有的实用程序类中——只是GetProperty
方法。问题是,我的实用程序类不是泛型类型的(即类声明没有像PropertyHelper
那样的<T>
参数),我暂时不能添加一个。
换句话说,我只希望GetProperty
方法是泛型类型的,而不是整个类。
那么,我需要进行哪些修改才能使该方法发挥作用呢?我已经尝试将T添加到该方法的泛型类型列表中:
public static PropertyInfo GetProperty<T, TValue>(Expression<Func<T, TValue>> selector)
但当我尝试以下操作时,它会给我带来错误:
PropertyInfo prop = MyUtilClass.GetProperty<Foo>(x => x.Bar);
显然,这是因为GetProperty
期望T
和TValue
。。。
我只是希望能够像上面这样称呼它。怎样
我可能对这个不太了解,但如果你想要代码:
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;
就像我说的,我可能偏离了基地,但这似乎就是你想要做的。