質問

PropertyDescriptorメソッドの値を返すIsReadOnly()を使用し、そしてReadOnlyAttributeに関連付けられているものとの違いは何ですか?

役に立ちましたか?

解決

主な違いは、これはあなたが(PropertyDescriptorICustomTypeDescriptorまたは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をテスト最初のレコードから。

完全な時間の無駄を!!!!

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top