【发布时间】:2013-01-20 19:34:14
【问题描述】:
我想将 this solution 改编为我现有的实用程序类 - 只是 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...
我只是希望能够像上面那样调用它。怎么样?
【问题讨论】:
-
你不能,基本上。 C# 不会让您仅推断一种类型参数。你必须有一个泛型类型somewhere。
-
不确定这段旧代码是否有帮助:stackoverflow.com/questions/724143/…
标签: c# .net reflection properties lambda