動的オブジェクトのメンバーを反映​​するにはどうすればいいですか? 質問する

動的オブジェクトのメンバーを反映​​するにはどうすればいいですか? 質問する

.NET 4 で dynamic キーワードを使用して宣言されたオブジェクトからプロパティとその値の辞書を取得する必要がありますか? これにはリフレクションを使用しても機能しないようです。

例:

dynamic s = new ExpandoObject();
s.Path = "/Home";
s.Name = "Home";

// How do I enumerate the Path and Name properties and get their values?
IDictionary<string, object> propertyValues = ???

ベストアンサー1

ExpandoObject の場合、ExpandoObject クラスは実際にIDictionary<string, object>そのプロパティを実装するため、解決策はキャストと同じくらい簡単です。

IDictionary<string, object> propertyValues = (IDictionary<string, object>)s;

これは一般的な動的オブジェクトでは機能しないことに注意してください。このような場合は、IDynamicMetaObjectProvider を介して DLR にドロップダウンする必要があります。

おすすめ記事