オブジェクトを受け取る外部ライブラリメソッドに送信するExpandoObjectがあります。私はこの外部libがTypeDescriptor.GetPropertiesを内部的に使用していることから、ExpandoObjectにいくつかの問題が発生しているようです。ExpandoObjectのプロパティを公開する
私は代わりに匿名のオブジェクトを使うことができますが、それはうまくいくようですが、ExpandoObjectを使用する方がはるかに便利です。
私自身のDynamicObjectを構築し、ICustomTypeDescriptorを実装することでそれを自分で処理する必要がありますか、ここで何か不足していますか?
アイデア?
以下somedave(のようにコメントあたり)によって解答のほかに更新
、私はこのクラス
public class ExpandoObjectTypeDescriptionProvider : TypeDescriptionProvider
{
private static readonly TypeDescriptionProvider m_Default = TypeDescriptor.GetProvider(typeof(ExpandoObject));
public ExpandoObjectTypeDescriptionProvider()
:base(m_Default)
{
}
public override ICustomTypeDescriptor GetTypeDescriptor(Type objectType, object instance)
{
var defaultDescriptor = base.GetTypeDescriptor(objectType, instance);
return instance == null ? defaultDescriptor :
new ExpandoObjectTypeDescriptor(instance);
}
}
を追加し、このようにそれを登録:
dynamic parameters = new ExpandoObject();
TypeDescriptor.AddProvider(new ExpandoObjectTypeDescriptionProvider(), parameters);
最後にプロパティ名のリストがありますか? –
事前に時間がないので(コンパイル時)... ExpandoObject –