我有一个使用表达式获取属性名称的方法。
public static void SomeMethod<TProperty>(Expression<Func<TProperty>> property)
{
var propertyName = property.Name;
// Do something,
}
我可以像这样为我的类调用这个函数。
SomeMethod(()=> SomePropertyName);
现在我面临的问题是我想为一个我不知道的类对象调用这个方法。
void EventHandler(object sender, PropertyChangedEventArgs e)
{
var propertyInfo = sender.GetType().GetProperty(e.PropertyName);
SomeMethod(() => propertyInfo); // Problem Here.
}
现在这里的问题是,当这个 EventHandler 调用 SomeMethod 时,方法名称是 propertyInfo 而不是 e.PropertyName (无论它包含什么)。sender 在这里可以是不同的类型,e.PropertyName 也可以是不同的类型。我正在寻找在 SomeMethod 中发送正确名称的通用解决方案。