比方说,我有一个方法,它打印对象的某些属性的名称和值:如何传递属性的列表的方法使用lambda表达式
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表达式指定属性(不确定这是否是正确的术语)。
E.g.我想可以称之为我的方法(在某种程度上)是这样的:
PrintProperties(user, u->u.FirstName, u->u.LastName, u->u.Email);
的目标是,让该方法的IntelliSense支持的用户,以防止输入错误。 (与ASP.NET MVC辅助方法类似,如TextBoxFor(u=>u.Name)
)。
我该如何定义我的方法,然后如何才能在方法内部获得PropertyInfo
?
然后我如何使用属性选择器获取对象的值? – ozz 2016-10-13 15:04:42