一旦我在一个正在研究的项目上找到了一个非常棒的方法,我可以用它来获取一个类的属性的名称,强类型,在重构或查找引用时它真的很方便。 代码的缺点是我真的不明白它是如何工作的,通常我很反感,但在这种情况下我会接受它。
代码是这样的:
public static class ObjectHelper<T>
{
public static string GetPropertyName<TProp>(Expression<Func<T, TProp>> expr)
{
var node = expr.Body as MemberExpression;
if (ReferenceEquals(null, node))
{
throw new InvalidOperationException("Expression must be of member access");
}
return node.Member.Name;
}
}
我可以在类CompanyPersonProfileViewModel
的类CountryId
上使用它,如下所示:
string s = ObjectHelper<CompanyPersonProfileViewModel>.GetPropertyName(z => z.CountryId);
无论如何,因为我不知道它是如何工作的(如果你这样做,我也会喜欢这个解释),我不知道如何根据我的其他愿望调整代码:get强类型方法的名称。
所以当我有同一个类和一个名为GetAllCountries()
的方法时,我可以输入:
string s = ObjectHelper<CompanyPersonProfileViewModel>.GetMethodName(z => z.GetAllCountries);
(或类似的东西)