未知の/匿名のオブジェクト(-graph)のプロパティにレイトバウンド/動的な方法でアクセスできるようにするメソッドを実装したいと思います(正しく呼び出す方法すらわかりません)。
これが私が達成したいことの例です:
// setup an anonymous object
var a = new { B = new { C = new { I = 33 } } };
// now get the value of a.B.C.I in a late-bound way
var i = Get(a, "B.C.I");
そして、これが「クラシック」リフレクションを使用した簡単な実装です。
public static object Get(object obj, string expression)
{
foreach (var name in expression.Split('.'))
{
var property = obj.GetType().GetProperty(name);
obj = property.GetValue(obj, null);
}
return obj;
}
上記のようなものを実装するために、C#/ .NET 4で他にどのようなオプションがありますか?
同じことを実現する方法があるかもしれません。これexpression
により、文字列の代わりにラムダ式を使用して指定できるようになりますか?式ツリーは何らかの形で役立ちますか(たとえば、この質問に示されているように)?
更新:オブジェクトと式は、Webサービス呼び出しを介してコードに渡されます。それが私が私の方法で使用object
した理由です。string
Get()