DesignerSerializationVisibilityAttribute Classe

Definizione

Specifica il tipo di persistenza da utilizzare quando si serializza una proprietà su un componente in fase di progettazione.

[System.AttributeUsage(System.AttributeTargets.Event | System.AttributeTargets.Field | System.AttributeTargets.Method | System.AttributeTargets.Property)]
public sealed class DesignerSerializationVisibilityAttribute : Attribute
public sealed class DesignerSerializationVisibilityAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Method | System.AttributeTargets.Property)]
public sealed class DesignerSerializationVisibilityAttribute : Attribute
Ereditarietà
DesignerSerializationVisibilityAttribute
Attributi

Esempio

Nell'esempio di codice seguente viene illustrato l'uso di un DesignerSerializationVisibilityAttribute set su Content. Mantiene i valori di una proprietà pubblica di un controllo utente, che può essere configurato in fase di progettazione. Per usare l'esempio, compilare prima il codice seguente in una libreria di controlli utente. Aggiungere quindi un riferimento al file di .dll compilato in un nuovo progetto applicazione Di Windows. Se si usa Visual Studio, l'oggetto ContentSerializationExampleControl viene aggiunto automaticamente alla casella degli strumenti.

Trascinare il controllo dalla casella degli strumenti a un modulo e impostare le proprietà dell'oggetto DimensionData elencato nella Finestra Proprietà. Quando si visualizza il codice per il modulo, il codice verrà aggiunto al InitializeComponent metodo del modulo padre. Questo codice imposta i valori delle proprietà del controllo a quelli impostati in modalità di progettazione.

using System;
using System.Collections;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Drawing;
using System.Windows.Forms;

namespace DesignerSerializationVisibilityTest
{
    // The code for this user control declares a public property of type DimensionData with a DesignerSerializationVisibility 
    // attribute set to DesignerSerializationVisibility.Content, indicating that the properties of the object should be serialized.

    // The public, not hidden properties of the object that are set at design time will be persisted in the initialization code
    // for the class object. Content persistence will not work for structs without a custom TypeConverter.		

    public class ContentSerializationExampleControl : System.Windows.Forms.UserControl
    {
    private System.ComponentModel.Container components = null;				
    
    [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
    public DimensionData Dimensions
    {
        get 
        {
        return new DimensionData(this);
        }		
    }

    public ContentSerializationExampleControl()
    {
            InitializeComponent();		
    }
        
    protected override void Dispose( bool disposing )
    {
        if( disposing )
        {
        if( components != null )
            components.Dispose();
        }
        base.Dispose( disposing );
    }

    private void InitializeComponent()
    {
        components = new System.ComponentModel.Container();
    }
    }

    [TypeConverterAttribute(typeof(System.ComponentModel.ExpandableObjectConverter))]
    // This attribute indicates that the public properties of this object should be listed in the property grid.
    public class DimensionData
    {		
    private Control owner;

    // This class reads and writes the Location and Size properties from the Control which it is initialized to.
    internal DimensionData(Control owner)
    {
            this.owner = owner;			
    }

    public Point Location
    {
        get
        {
        return owner.Location;
        }
        set
        {
        owner.Location = value;
        }
    }

    public Size FormSize
    {
        get
            {
        return owner.Size;
        }
        set
        {
        owner.Size = value;
        }
    }
    }
}

Commenti

Quando un serializzatore mantiene lo stato persistente di un documento in modalità progettazione, spesso aggiunge codice al metodo di inizializzazione dei componenti per rendere persistenti i valori delle proprietà impostate in fase di progettazione. Ciò avviene per impostazione predefinita per la maggior parte dei tipi di base, se non è stato impostato alcun attributo per indirizzare altri comportamenti.

DesignerSerializationVisibilityAttributeCon , è possibile indicare se il valore per una proprietà è Visible, e deve essere persistente nel codice di inizializzazione, Hiddene non deve essere persistente nel codice di inizializzazione oppure è costituito Contentda , che deve avere il codice di inizializzazione generato per ogni oggetto pubblico, non nascosto della proprietà assegnata alla proprietà.

I membri che non dispongono di un DesignerSerializationVisibilityAttribute oggetto verranno considerati come se abbiano un DesignerSerializationVisibilityAttribute valore di Visible. I valori di una proprietà contrassegnati come Visible verranno serializzati, se possibile, da un serializzatore per il tipo. Per specificare la serializzazione personalizzata per un tipo o una proprietà specifica, usare .DesignerSerializerAttribute

Per altre informazioni, vedere Attributi.

Costruttori

Campi

Content

Specifica che in un serializzatore dovrebbe essere serializzato il contenuto della proprietà, anziché la proprietà stessa. Questo campo è di sola lettura.

Default

Specifica il valore predefinito, ovvero Visible, che indica che la finestra di progettazione visiva genera il valore di una proprietà utilizzando regole predefinite. Questo campo static è di sola lettura.

Hidden

Specifica che in un serializzatore non dovrebbe essere serializzato il valore della proprietà. Questo campo static è di sola lettura.

Visible

Specifica che in un serializzatore deve essere possibile serializzare il valore della proprietà. Questo campo static è di sola lettura.

Proprietà

TypeId

Quando è implementata in una classe derivata, ottiene un identificatore univoco della classe Attribute.

(Ereditato da Attribute)
Visibility

Ottiene un valore che indica la modalità di serializzazione di base da utilizzare per determinare se e come rendere persistente il valore di una proprietà.

Metodi

Equals(Object)

Indica se questa istanza e un oggetto specificato sono uguali.

GetHashCode()

Restituisce il codice hash per questo oggetto.

GetType()

Ottiene l'oggetto Type dell'istanza corrente.

(Ereditato da Object)
IsDefaultAttribute()

Ottiene un valore che indica se il valore corrente dell'attributo è il valore predefinito dell'attributo stesso.

IsDefaultAttribute()

In caso di override in una classe derivata, indica se il valore di questa istanza è il valore predefinito per la classe derivata.

(Ereditato da Attribute)
Match(Object)

Quando è sottoposto a override in una classe derivata, restituisce un valore che indica se questa istanza equivale a un oggetto specificato.

(Ereditato da Attribute)
MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)

Implementazioni dell'interfaccia esplicita

_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Esegue il mapping di un set di nomi a un set corrispondente di ID dispatch.

(Ereditato da Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Recupera le informazioni sul tipo relative a un oggetto, che possono essere usate per ottenere informazioni sul tipo relative a un'interfaccia.

(Ereditato da Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Recupera il numero delle interfacce di informazioni sul tipo fornite da un oggetto (0 o 1).

(Ereditato da Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Fornisce l'accesso a proprietà e metodi esposti da un oggetto.

(Ereditato da Attribute)

Si applica a

Prodotto Versioni
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

Vedi anche