1

DesignSurfaceでホストされているコントロールがあります。

その Location プロパティが によってアクセスされるcontrol.Location場合と、 によってアクセスされる場合、propertyDescriptor.GetValue(control)異なる値が得られます。

propertyDescriptorタイプはPropertyDescriptorです。

誰にもこれに対する解決策がありますか?オブジェクト インスタンスが同じであることを確認しました。

4

1 に答える 1

1

まぁ、物によるかもしれません。そして、どのようにして型記述子を取得したか。たとえば、何でも返すことができるカスタム記述子である可能性があります。その場合は、GetTypedescriptor メソッドに、カスタムの型記述子を使用しないという情報を与えることができます。(実際のコードを掲載していないのは残念ですが、利用可能な IDE がなく、正確な構文を思い出せません)。

別のアプローチは、propertyDescriptor の代わりに PropertyInfo を使用することです (残りのコードが System.Reflection.PropertyInfo で動作する場合)。

次のように、stype 文字列のプロパティの長さの PropertyInfo を取得できます。

typeof(string).GetProperty("長さ"); または、次のようにコンパイル時に不明な型である場合: obj.GetType().GetProperty("Length");

すべてのプロパティをループする必要がある場合は、代わりに GetProperties を呼び出します。

しかし、PropertyInfo はすべて、PropertyDescriptor の代わりに PropertyInfo を使用できるという私の推測に依存しています。

于 2009-05-29T12:48:00.693 に答える