假设我有一个方法,它打印对象的某些属性的名称和值:
public void PrintProperties(object o, params string[] propertyNames)
{
foreach (var propertyName in propertyNames)
{
// get the property info,
// then get the property's value,
// print property-name and -value
}
}
// method can be used like this
PrintProperties(user, "FirstName", "LastName", "Email");
现在,不必将字符串列表传递给该方法,我想更改该方法,以便可以使用 lambda 表达式指定属性(不确定这是否是正确的术语)。
例如,我希望能够(以某种方式)这样调用我的方法:
PrintProperties(user, u->u.FirstName, u->u.LastName, u->u.Email);
目标是为方法的用户提供智能感知支持,以防止输入错误。(类似于 ASP.NET MVC 辅助方法,如TextBoxFor(u=>u.Name)
)。
我必须如何定义我的方法,然后我怎样才能PropertyInfo
在方法中获取 s ?