5

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

4

3 に答える 3

5

PropertyDescriptor主な違いは、独自の実装を (またはを介しICustomTypeDescriptor​​て)提供すると、より多くの制御が可能になることです。次に、アクセス権に基づいて、書き込み可能な場合の独自のロジックを選択できます。TypeDescriptionProviderTypeConverter

でも、はい; デフォルトの実装では、setter のないプロパティと でマークされたプロパティについては読み取り専用と報告されますReadOnlyAttribute

于 2009-04-16T19:48:47.913 に答える
3

Reflector を使って見ると違いはありません。

派生クラス SimplePropertyDescriptor の 1 つに次のコードがあります。


    public override bool IsReadOnly
    {
        get
        {
            return this.Attributes.Contains(ReadOnlyAttribute.Yes);
        }
    }

于 2009-04-16T18:09:10.133 に答える
0

ただのメモ。

各エンティティの読み取り専用状態を個別に制御するために、アプリケーションのエンティティ オブジェクトに ICustomTypeDescriptor を実装するのに 1 日を費やしました。

したがって、それぞれの PropertyDescriptor 実装は、元のエンティティ オブジェクトへの参照を保持していたため、IsReadOnly プロパティは次のようになりました。

public override bool IsReadOnly
{
    get { return _owner.IsReadOnly;}
}

ただし、コードを実行すると、BindingSource コンポーネントは、セット内の各レコードに対して ICustomTypeDescriptor の GetProperties() メソッドから一連の PropertyDescriptor を読み取りました。記録。

完全に時間の無駄!!!!

于 2013-02-04T23:55:32.900 に答える