Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

Clase DataMemberAttribute

 

Cuando se aplica al miembro de un tipo, especifica que el miembro forma parte de un contrato de datos y lo puede serializar DataContractSerializer.

Espacio de nombres:   System.Runtime.Serialization
Ensamblado:  System.Runtime.Serialization (en System.Runtime.Serialization.dll)

System.Object
  System.Attribute
    System.Runtime.Serialization.DataMemberAttribute

[AttributeUsageAttribute(AttributeTargets.Property | AttributeTargets.Field, 
	Inherited = false, AllowMultiple = false)]
public sealed class DataMemberAttribute : Attribute

NombreDescripción
System_CAPS_pubmethodDataMemberAttribute()

Inicializa una nueva instancia de la clase DataMemberAttribute.

NombreDescripción
System_CAPS_pubpropertyEmitDefaultValue

Obtiene o establece un valor que especifica si se debe serializar el valor predeterminado para un campo o propiedad que se está serializando.

System_CAPS_pubpropertyIsNameSetExplicitly

Obtiene si Name se ha establecido explícitamente.

System_CAPS_pubpropertyIsRequired

Obtiene o establece un valor que indica al motor de serialización que el miembro debe estar presente durante la lectura o la deserialización.

System_CAPS_pubpropertyName

Obtiene o establece un nombre de miembro de datos.

System_CAPS_pubpropertyOrder

Obtiene o establece el orden de serialización y deserialización de un miembro.

System_CAPS_pubpropertyTypeId

Cuando se implementa en una clase derivada, obtiene un identificador único para este Attribute.(Heredado de Attribute).

NombreDescripción
System_CAPS_pubmethodEquals(Object)

Esta API admite la infraestructura producto y no está diseñada para usarse directamente desde el código. Devuelve un valor que indica si esta instancia equivale al objeto especificado. (Heredado de Attribute).

System_CAPS_pubmethodGetHashCode()

Devuelve el código hash de esta instancia.(Heredado de Attribute).

System_CAPS_pubmethodGetType()

Obtiene el Type de la instancia actual.(Heredado de Object).

System_CAPS_pubmethodIsDefaultAttribute()

Si se reemplaza en una clase derivada, indica si el valor de esta instancia es el valor predeterminado de la clase derivada.(Heredado de Attribute).

System_CAPS_pubmethodMatch(Object)

Cuando se invalida en una clase derivada, devuelve un valor que indica si esta instancia es igual al objeto especificado. (Heredado de Attribute).

System_CAPS_pubmethodToString()

Devuelve una cadena que representa al objeto actual. (Heredado de Object).

NombreDescripción
System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Asigna un conjunto de nombres a un conjunto correspondiente de identificadores de envío.(Heredado de Attribute).

System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Obtiene la información del tipo de un objeto, que puede utilizarse para obtener la información del tipo de una interfaz. (Heredado de Attribute).

System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.GetTypeInfoCount(UInt32)

Recupera el número de interfaces de tipo de información que suministra un objeto (0 ó 1)

(Heredado de Attribute).

System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Proporciona acceso a las propiedades y los métodos expuestos por un objeto.(Heredado de Attribute).

Apply the T:System.Runtime.Serialization.DataMemberAttribute attribute in conjunction with the T:System.Runtime.Serialization.DataContractAttribute to identify members of a type that are part of a data contract. One of the serializers that can serialize data contracts is the T:System.Runtime.Serialization.DataContractSerializer.

The data contract model is an "opt-in" model. Applying the T:System.Runtime.Serialization.DataMemberAttribute to a field or property explicitly specifies that the member value will be serialized. In contrast, the T:System.Runtime.Serialization.Formatters.Binary.BinaryFormatter serializes public and private fields of a type, and the T:System.Xml.Serialization.XmlSerializer serializes only public fields and properties of a type.

System_CAPS_cautionPrecaución

You can apply the T:System.Runtime.Serialization.DataMemberAttribute to private fields or properties. Be aware that the data returned by the member (even if it's private) will be serialized and deserialized, and thus can be viewed or intercepted by a malicious user or process.

By default, the CLR member name is used as the name of the data member. By setting the P:System.Runtime.Serialization.DataMemberAttribute.Name property, you can customize the name of the data member. This can be used to provide a name that may not be allowed as a CLR member name. When mapping to XML using the T:System.Runtime.Serialization.DataContractSerializer, this name is used as the name of the schema element in a type.

System_CAPS_noteNota

Properties to which the T:System.Runtime.Serialization.DataMemberAttribute attribute has been applied must have both get and set fields; they cannot be get-only or set-only.

For more information about data contracts and data members, see Using Data Contracts. For more information about member names, see Data Member Default Values.

The following example shows a type to which the T:System.Runtime.Serialization.DataContractAttribute and T:System.Runtime.Serialization.DataMemberAttribute attributes have been applied. The P:System.Runtime.Serialization.DataMemberAttribute.Name property on the T:System.Runtime.Serialization.DataMemberAttribute is set to "ID".

using System;
using System.Collections;
using System.IO;
using System.Runtime.Serialization;
using System.Xml;

// You must apply a DataContractAttribute or SerializableAttribute
// to a class to have it serialized by the DataContractSerializer.
[DataContract()]
class Person : IExtensibleDataObject
{
    private string LastNameValue;
    // Apply the DataMemberAttribute to fields (or properties) 
    // that must be serialized.
    [DataMember()]
    public string FirstName;

    [DataMember]
    public string LastName
    {
        get { return LastNameValue; }
        set { LastNameValue = value; }
    }

    [DataMember(Name = "ID")]
    public int IdNumber;

    // Note that you can apply the DataMemberAttribute to 
    // a private field as well.
    [DataMember]
    private string Secret;

    public Person(string newfName, string newLName, int newIdNumber)
    {
        FirstName = newfName;
        LastName = newLName;
        IdNumber = newIdNumber;
        Secret = newfName + newLName + newIdNumber;
    }

    // The extensionDataValue field holds data from future versions 
    // of the type.  This enables this type to be compatible with 
    // future versions. The field is required to implement the 
    // IExtensibleDataObject interface.

    private ExtensionDataObject extensionDatavalue;

    public ExtensionDataObject ExtensionData
    {
        get
        {
            return extensionDatavalue;
        }
        set
        {
            extensionDatavalue = value;
        }
    }
}

public class Test
{
    public static void Main(string[] args)
    {
        try
        {
            WriteObject(@"DataMemberAttributeExample.xml");
            ReadObject(@"DataMemberAttributeExample.xml");
        }
        catch (Exception exc)
        {
            Console.WriteLine(
            "The serialization operation failed: {0} StackTrace: {1}",
            exc.Message, exc.StackTrace);
        }
        finally
        {
            Console.WriteLine("Press <Enter> to exit....");
            Console.ReadLine();
        }
    }

    public static void WriteObject(string filename)
    {
        // Create a new instance of the Person class.
        Person p1 = new Person("Zighetti", "Barbara", 101);
        FileStream writer = new FileStream(filename,
        FileMode.OpenOrCreate);
        DataContractSerializer ser =
            new DataContractSerializer(typeof(Person));
        ser.WriteObject(writer, p1);
        writer.Close();
    }

    public static void ReadObject(string filename)
    {
        // Deserialize an instance of the Person class 
        // from an XML file.
        FileStream fs = new FileStream(filename,
        FileMode.OpenOrCreate);
        DataContractSerializer ser =
            new DataContractSerializer(typeof(Person));
        // Deserialize the data and read it from the instance.
        Person deserializedPerson = (Person)ser.ReadObject(fs);
        fs.Close();
        Console.WriteLine(String.Format("{0} {1}, ID: {2}",
        deserializedPerson.FirstName, deserializedPerson.LastName,
        deserializedPerson.IdNumber));
    }

}

Plataforma universal de Windows
Disponible desde 8
.NET Framework
Disponible desde 3.0
Biblioteca de clases portable
Se admite en: plataformas portátiles de .NET
Silverlight
Disponible desde 2.0
Windows Phone Silverlight
Disponible desde 7.0
Windows Phone
Disponible desde 8.1

Cualquier miembro ( Compartido en Visual Basic) estático público de este tipo es seguro para subprocesos. No se garantiza que los miembros de instancia sean seguros para subprocesos.

Volver al principio
Mostrar: