如何将这个答案应用于非泛型类型的类



我想将这个解决方案调整到我现有的实用程序类中——只是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期望TTValue。。。

我只是希望能够像上面这样称呼它。怎样

我可能对这个不太了解,但如果你想要代码:

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;

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

相关内容

  • 没有找到相关文章

最新更新