オブジェクトのいくつかのプロパティの名前と値を出力するメソッドがあるとします。
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");
文字列のリストをメソッドに渡す代わりに、ラムダ式を使用してプロパティを指定できるようにメソッドを変更したいと思います (それが正しい用語かどうかはわかりません)。
たとえば、次のように (何らかの方法で) メソッドを呼び出すことができるようにしたいと考えています。
PrintProperties(user, u->u.FirstName, u->u.LastName, u->u.Email);
目標は、メソッドのユーザーにインテリセンス サポートを提供し、入力エラーを防ぐことです。( のような ASP.NET MVC ヘルパー メソッドに似ていますTextBoxFor(u=>u.Name)
)。
メソッドを定義するにはどうすればよいPropertyInfo
ですか? また、メソッド内で s を取得するにはどうすればよいですか?