Domanda

Qual è la differenza tra l'utilizzo di un PropertyDescriptor che restituisce un valore per il metodo IsReadOnly(), e uno che è associato con un ReadOnlyAttribute?

È stato utile?

Soluzione

La differenza principale è che questo ti permette di cogliere un maggiore controllo se si fornisce la propria implementazione PropertyDescriptor (via ICustomTypeDescriptor, TypeDescriptionProvider o TypeConverter). Poi si può scegliere il proprio di logica per cui è scrivibile -., Ad esempio, sulla base di diritti di accesso

Ma sì; sotto l'implementazione predefinita, segnalerà di sola lettura per le proprietà, senza setter, e per le proprietà contrassegnate con ReadOnlyAttribute.

Altri suggerimenti

Nessuna differenza, quando lo guardo con Reflector.

Una delle SimplePropertyDescriptor classe derivata ha il seguente codice.


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

Solo due parole.

ho passato una giornata attuazione ICustomTypeDescriptor per gli oggetti entità nella mia richiesta, al fine di controllare lo stato di sola lettura di ogni entità individuale.

In questo modo, ogni implementazione PropertyDescriptor mantenuto un riferimento all'oggetto soggetto è venuto, così la proprietà IsReadOnly era qualcosa di simile a questo:

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

Tuttavia, quando ho eseguito il codice componente BindingSource leggere un insieme di PropertyDescriptor s dalle GetProperties () di ICustomTypeDescriptor per ciascun record del gruppo, tuttavia, quando si controllato il valore di IsReadOnly, esso testato soltanto PropertyDescriptor ottenuto dal primo record.

completa perdita di tempo !!!!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top