PropertyDescriptor.IsReadOnly対ReadOnlyAttribute()
-
09-09-2019 - |
質問
PropertyDescriptor
メソッドの値を返すIsReadOnly()
を使用し、そしてReadOnlyAttribute
に関連付けられているものとの違いは何ですか?
解決
主な違いは、これはあなたが(PropertyDescriptor
、ICustomTypeDescriptor
またはTypeDescriptionProvider
経由で)独自のTypeConverter
の実装を提供する場合は、より多くの制御をつかむことを可能にするということです。そして、あなたはそれが書き込み可能であるときのために、あなたのの自分ののロジックを選択することができます - たとえば、アクセス権に基づいて
しかし、はい。デフォルトの実装の下で、それは読み取り専用セッターのない、とReadOnlyAttribute
でマークされたプロパティのプロパティのために報告します。
他のヒント
私は反射板を使用してそれを見ません違います。
派生クラスの一つSimplePropertyDescriptor次のコードを有している。
public override bool IsReadOnly
{
get
{
return this.Attributes.Contains(ReadOnlyAttribute.Yes);
}
}
ただ、注意ます。
私は、個別に各エンティティの読み取り専用の状態を制御するために、自分のアプリケーション内のエンティティオブジェクトのICustomTypeDescriptorを実装する一日を過ごします。
このように、それぞれのPropertyDescriptorの実装は、それがどこから来たエンティティオブジェクトへの参照を保持するので、IsReadOnlyプロパティは、このようなものだっます:
public override bool IsReadOnly
{
get { return _owner.IsReadOnly;}
}
それはIsReadOnlyの値をチェックするとき、しかし、私は、コードを実行したときのBindingSource成分がセット内の各レコードのICustomTypeDescriptorのGetPropertiesの()メソッドからのPropertyDescriptorのセットを読み出す、しかし、それだけで得られるのPropertyDescriptorをテスト最初のレコードから。
完全な時間の無駄を!!!!