DataMemberAttribute DataMemberAttribute DataMemberAttribute DataMemberAttribute Class

Definition

Gibt bei Anwendung auf den Member eines Typs an, dass der Member Teil eines Datenvertrags ist und über den DataContractSerializer serialisierbar ist. When applied to the member of a type, specifies that the member is part of a data contract and is serializable by the DataContractSerializer.

public ref class DataMemberAttribute sealed : Attribute
[System.AttributeUsage(System.AttributeTargets.Field | System.AttributeTargets.Property, AllowMultiple=false, Inherited=false)]
[System.AttributeUsage(System.AttributeTargets.Property | System.AttributeTargets.Field, AllowMultiple=false, Inherited=false)]
public sealed class DataMemberAttribute : Attribute
type DataMemberAttribute = class
    inherit Attribute
Public NotInheritable Class DataMemberAttribute
Inherits Attribute
Vererbung
DataMemberAttributeDataMemberAttributeDataMemberAttributeDataMemberAttribute
Attribute

Beispiele

Das folgende Beispiel zeigt einen Typ, der die DataContractAttribute und DataMemberAttribute Attribute angewendet wurden.The following example shows a type to which the DataContractAttribute and DataMemberAttribute attributes have been applied. Die Name Eigenschaft für die DataMemberAttribute auf "ID" festgelegt ist.The Name property on the 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));
    }

}
Imports System.Collections
Imports System.IO
Imports System.Runtime.Serialization
Imports System.Xml

' You must apply a DataContractAttribute or SerializableAttribute
' to a class to have it serialized by the DataContractSerializer.
<DataContract()>  _
Class Person
    Implements IExtensibleDataObject

    Private LastNameValue As String
     
    ' Apply the DataMemberAttribute to fields (or properties) 
    ' that must be serialized.
    
    <DataMember()>  _
    Public FirstName As String
    
    <DataMember()>  _
    Public Property LastName() As String
        Get
            Return LastNameValue 
        End Get

        Set(ByVal Value As String)
           LastNameValue = Value
        End Set
    End Property

    
    <DataMember(Name:="ID")>  _
    Public IdNumber As Integer
    
    ' Note that you can apply the DataMemberAttribute to 
    ' a private field as well.
    <DataMember()>  _
    Private Secret As String
    
    Public Sub New(ByVal newfName As String, ByVal newLName As String, ByVal newIdNumber As Integer) 
        FirstName = newfName
        LastName = newLName
        IdNumber = newIdNumber
        Secret = newfName + newLName + newIdNumber.ToString()
    
    End Sub 
    
    ' The ExtensionData 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 
    ' IExtensibleObjectData interface.
    Private extensionDataValue As ExtensionDataObject
    
    Public Property ExtensionData() As ExtensionDataObject _
       Implements IExtensibleDataObject.ExtensionData
        Get
            Return extensionDataValue
        End Get
        Set
            extensionDataValue = value
        End Set
    End Property
End Class 

Public Class Test
    Public Shared Sub Main(ByVal args() As String) 
        Try
            ReadObject("DataMemberAttributeExample.xml")
            WriteObject("DataMemberAttributeExample.xml")
        Catch exc As Exception
            Console.WriteLine("The serialization operation failed: {0} StackTrace: {1}", _
            exc.Message, exc.StackTrace)
        Finally
            Console.WriteLine("Press <Enter> to exit....")
            Console.ReadLine()
        End Try
    End Sub 
    
    Public Shared Sub ReadObject(ByVal filename As String) 
        ' Create a new instance of the Person class.
        Dim p1 As New Person("Zighetti", "Barbara", 101)
        Dim writer As New FileStream(filename, FileMode.Create)
        Dim ser As New DataContractSerializer(GetType(Person))
        ser.WriteObject(writer, p1)
        writer.Close()
    End Sub 

    Public Shared Sub WriteObject(ByVal filename As String) 
        ' Deserialize an instance of the Person class 
        ' from an XML file.
        Dim fs As New FileStream(filename, FileMode.OpenOrCreate)
        Dim ser As New DataContractSerializer(getTYpe(Person))
        ' Deserialize the data and read it from the instance.
        Dim deserializedPerson As Person = ser.ReadObject(fs)
        fs.Close()
        Console.WriteLine(String.Format("{0} {1}, ID: {2}", _
        deserializedPerson.FirstName, deserializedPerson.LastName, deserializedPerson.IdNumber))
    End Sub 
End Class 

Hinweise

Wenden Sie das DataMemberAttribute-Attribut zusammen mit dem DataContractAttribute an, um Member eines Typs zu identifizieren, die Teil eines Datenvertrags sind.Apply the DataMemberAttribute attribute in conjunction with the DataContractAttribute to identify members of a type that are part of a data contract. Eines der Serialisierungsprogramme, die Datenverträge serialisieren können, ist der DataContractSerializer.One of the serializers that can serialize data contracts is the DataContractSerializer.

Das Datenvertragsmodell ist ein 'Opt-In'-Modell.The data contract model is an "opt-in" model. Durch Anwendung des DataMemberAttribute auf ein Feld oder eine Eigenschaft wird explizit festgelegt, dass der Memberwert serialisiert werden soll.Applying the DataMemberAttribute to a field or property explicitly specifies that the member value will be serialized. Demgegenüber serialisiert der BinaryFormatter öffentliche und private Felder eines Typs, während der XmlSerializer nur öffentliche Felder und Eigenschaften eines Typs serialisiert.In contrast, the BinaryFormatter serializes public and private fields of a type, and the XmlSerializer serializes only public fields and properties of a type.

Achtung

Sie können den DataMemberAttribute auf private Felder oder Eigenschaften anwenden.You can apply the DataMemberAttribute to private fields or properties. Beachten Sie, dass die Daten, die vom Element zurückgegeben wird (selbst wenn es privat ist) serialisiert und deserialisiert, und daher können angezeigt oder abgefangen werden, indem ein böswilliger Benutzer oder Prozess.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.

Standardmäßig wird der CLR-Membername als Name des Datenmembers verwendet.By default, the CLR member name is used as the name of the data member. Durch Festlegen der Name-Eigenschaft können Sie den Namen des Datenmembers anpassen.By setting the Name property, you can customize the name of the data member. Auf diese Weise kann ein Name angegeben werden, der als CLR-Membername möglicherweise nicht erlaubt ist.This can be used to provide a name that may not be allowed as a CLR member name. Beim Zuordnen zu XML mithilfe des DataContractSerializer wird dieser Name als der Name des Schemaelements in einem Typ verwendet.When mapping to XML using the DataContractSerializer, this name is used as the name of the schema element in a type.

Hinweis

Eigenschaften, auf die das DataMemberAttribute-Attribut angewendet wurde, müssen über die Felder get und set verfügen. Sie können nicht nur get oder nur set aufweisen.Properties to which the DataMemberAttribute attribute has been applied must have both get and set fields; they cannot be get-only or set-only.

Weitere Informationen über Datenverträge und Datenmember finden Sie unter Using Data Contracts.For more information about data contracts and data members, see Using Data Contracts. Weitere Informationen zu den Elementnamen, finden Sie unter Datenmemberwerte Standard.For more information about member names, see Data Member Default Values.

Konstruktoren

DataMemberAttribute() DataMemberAttribute() DataMemberAttribute() DataMemberAttribute()

Initialisiert eine neue Instanz der DataMemberAttribute-Klasse. Initializes a new instance of the DataMemberAttribute class.

Eigenschaften

EmitDefaultValue EmitDefaultValue EmitDefaultValue EmitDefaultValue

Ruft einen Wert ab, der angibt, ob der Standardwert eines Felds oder einer Eigenschaft serialisiert werden soll, oder legt einen Wert fest. Gets or sets a value that specifies whether to serialize the default value for a field or property being serialized.

IsNameSetExplicitly IsNameSetExplicitly IsNameSetExplicitly IsNameSetExplicitly

Ruft ab, ob Name explizit festgelegt wurde. Gets whether Name has been explicitly set.

IsRequired IsRequired IsRequired IsRequired

Ruft einen Wert auf, der die Serialisierungs-Engine anweist, dass der Member beim Lesen oder Deserialisieren vorhanden sein muss, oder legt einen Wert fest. Gets or sets a value that instructs the serialization engine that the member must be present when reading or deserializing.

Name Name Name Name

Ruft einen Datenmembernamen ab oder legt diesen fest. Gets or sets a data member name.

Order Order Order Order

Ruft die Reihenfolge der Serialisierung und Deserialisierung eines Members ab oder legt diese fest. Gets or sets the order of serialization and deserialization of a member.

TypeId TypeId TypeId TypeId

Ruft bei Implementierung in einer abgeleiteten Klasse einen eindeutigen Bezeichner für dieses Attribute ab. When implemented in a derived class, gets a unique identifier for this Attribute.

(Inherited from Attribute)

Methoden

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Gibt einen Wert zurück, der angibt, ob diese Instanz gleich einem angegebenen Objekt ist. Returns a value that indicates whether this instance is equal to a specified object.

(Inherited from Attribute)
GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Gibt den Hashcode für diese Instanz zurück. Returns the hash code for this instance.

(Inherited from Attribute)
GetType() GetType() GetType() GetType()

Ruft den Type der aktuellen Instanz ab. Gets the Type of the current instance.

(Inherited from Object)
IsDefaultAttribute() IsDefaultAttribute() IsDefaultAttribute() IsDefaultAttribute()

Gibt beim Überschreiben in einer abgeleiteten Klasse an, ob der Wert der Instanz der Standardwert für die abgeleitete Klasse ist. When overridden in a derived class, indicates whether the value of this instance is the default value for the derived class.

(Inherited from Attribute)
Match(Object) Match(Object) Match(Object) Match(Object)

Beim Überschreiben in einer abgeleiteten Klasse wird ein Wert zurückgegeben, der angibt, ob diese Instanz einem bestimmten Objekt entspricht. When overridden in a derived class, returns a value that indicates whether this instance equals a specified object.

(Inherited from Attribute)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object. Creates a shallow copy of the current Object.

(Inherited from Object)
ToString() ToString() ToString() ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. Returns a string that represents the current object.

(Inherited from Object)

Explizite Schnittstellenimplementierungen

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

Ordnet eine Reihe von Namen einer entsprechenden Reihe von Dispatchbezeichnern zu. Maps a set of names to a corresponding set of dispatch identifiers.

(Inherited from Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Ruft die Typinformationen für ein Objekt ab, mit deren Hilfe die Typinformationen für eine Schnittstelle abgerufen werden können. Retrieves the type information for an object, which can be used to get the type information for an interface.

(Inherited from Attribute)
_Attribute.GetTypeInfoCount(UInt32) _Attribute.GetTypeInfoCount(UInt32) _Attribute.GetTypeInfoCount(UInt32) _Attribute.GetTypeInfoCount(UInt32)

Ruft die Anzahl der Schnittstellen mit Typinformationen ab, die von einem Objekt bereitgestellt werden (0 oder 1). Retrieves the number of type information interfaces that an object provides (either 0 or 1).

(Inherited from Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Stellt den Zugriff auf von einem Objekt verfügbar gemachte Eigenschaften und Methoden bereit. Provides access to properties and methods exposed by an object.

(Inherited from Attribute)

Gilt für:

Siehe auch