(0) exportieren Drucken
Alle erweitern
Dieser Artikel wurde maschinell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
Übersetzung
Original

DataMemberAttribute-Klasse

Gibt bei Anwendung auf den Member eines Typs an, dass der Member Teil eines Datenvertrags ist und über den DataContractSerializer serialisierbar ist.

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

Namespace:  System.Runtime.Serialization
Assembly:  System.Runtime.Serialization (in System.Runtime.Serialization.dll)

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

Der DataMemberAttribute-Typ macht die folgenden Member verfügbar.

  NameBeschreibung
Öffentliche MethodeUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsDataMemberAttributeInitialisiert eine neue Instanz der DataMemberAttribute-Klasse.
Zum Seitenanfang

  NameBeschreibung
Öffentliche EigenschaftUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsEmitDefaultValueRuft einen Wert ab, der angibt, ob der Standardwert eines Felds oder einer Eigenschaft serialisiert werden soll, oder legt einen Wert fest.
Öffentliche EigenschaftUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsIsRequiredRuft einen Wert auf, der das Serialisierungsmodul anweist, dass der Member beim Lesen oder Deserialisieren vorhanden sein muss, oder legt einen Wert fest.
Öffentliche EigenschaftUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsNameRuft einen Datenmembernamen ab oder legt diesen fest.
Öffentliche EigenschaftUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsOrderRuft die Reihenfolge der Serialisierung und Deserialisierung eines Members ab oder legt diese fest.
Öffentliche EigenschaftTypeIdBei Implementierung in einer abgeleiteten Klasse wird ein eindeutiger Bezeichner für dieses Attribute abgerufen. (Von Attribute geerbt.)
Zum Seitenanfang

  NameBeschreibung
Öffentliche MethodeUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsEqualsInfrastruktur. Gibt einen Wert zurück, der angibt, ob diese Instanz gleich einem angegebenen Objekt ist. (Von Attribute geerbt.)
Öffentliche MethodeUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsGetHashCodeGibt den Hashcode für diese Instanz zurück. (Von Attribute geerbt.)
Öffentliche MethodeUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsGetTypeRuft den Type der aktuellen Instanz ab. (Von Object geerbt.)
Öffentliche MethodeIsDefaultAttributeBeim Überschreiben in einer abgeleiteten Klasse wird angegeben, ob der Wert dieser Instanz der Standardwert für die abgeleitete Klasse ist. (Von Attribute geerbt.)
Öffentliche MethodeMatchBeim Überschreiben in einer abgeleiteten Klasse wird ein Wert zurückgegeben, der angibt, ob diese Instanz einem bestimmten Objekt entspricht. (Von Attribute geerbt.)
Öffentliche MethodeUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsToStringGibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Von Object geerbt.)
Zum Seitenanfang

  NameBeschreibung
Explizite SchnittstellenimplementierungPrivate Methode_Attribute.GetIDsOfNamesOrdnet eine Reihe von Namen einer entsprechenden Reihe von Dispatchbezeichnern zu. (Von Attribute geerbt.)
Explizite SchnittstellenimplementierungPrivate Methode_Attribute.GetTypeInfoRuft die Typinformationen für ein Objekt ab, mit deren Hilfe die Typinformationen für eine Schnittstelle abgerufen werden können. (Von Attribute geerbt.)
Explizite SchnittstellenimplementierungPrivate Methode_Attribute.GetTypeInfoCountRuft die Anzahl der Schnittstellen mit Typinformationen ab, die von einem Objekt bereitgestellt werden (0 oder 1). (Von Attribute geerbt.)
Explizite SchnittstellenimplementierungPrivate Methode_Attribute.InvokeStellt den Zugriff auf von einem Objekt verfügbar gemachte Eigenschaften und Methoden bereit. (Von Attribute geerbt.)
Zum Seitenanfang

Wenden Sie das DataMemberAttribute-Attribut zusammen mit dem DataContractAttribute an, um Member eines Typs zu identifizieren, die Teil eines Datenvertrags sind. Eines der Serialisierungsprogramme, die Datenverträge serialisieren können, ist der DataContractSerializer.

Das Datenvertragsmodell ist ein 'Opt-In'-Modell. Durch Anwendung des DataMemberAttribute auf ein Feld oder eine Eigenschaft wird explizit festgelegt, dass der Memberwert serialisiert werden soll. Demgegenüber serialisiert der BinaryFormatter öffentliche und private Felder eines Typs, während der XmlSerializer nur öffentliche Felder und Eigenschaften eines Typs serialisiert.

WarnhinweisVorsicht

Sie können den DataMemberAttribute auf private Felder oder Eigenschaften anwenden. Beachten Sie, dass die von dem Member zurückgegebenen Daten (auch bei privaten Membern) serialisiert und deserialisiert werden und daher von böswilligen Benutzern oder Vorgängen angezeigt oder abgefangen werden können.

Standardmäßig wird der CLR-Membername als Name des Datenmembers verwendet. Durch Festlegen der Name-Eigenschaft können Sie den Namen des Datenmembers anpassen. Auf diese Weise kann ein Name angegeben werden, der als CLR-Membername möglicherweise nicht erlaubt ist. Beim Zuordnen zu XML mithilfe des DataContractSerializer wird dieser Name als der Name des Schemaelements in einem Typ verwendet.

HinweisHinweis

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.

Weitere Informationen über Datenverträge und Datenmember finden Sie unter Verwenden von Datenverträgen. Weitere Informationen zu Membernamen finden Sie unter Standardwerte der Datenelemente.

Das folgende Beispiel zeigt einen Typ, an das die DataContractAttribute und DataMemberAttribute-Attribute angewendet wurden. Die Name-Eigenschaft auf DataMemberAttribute wird auf "IDs" festgelegt.


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));
    }

}


.NET Framework

Unterstützt in: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0

.NET Framework Client Profile

Unterstützt in: 4, 3.5 SP1

Portable Klassenbibliothek

Unterstützt in: Portable Klassenbibliothek

.NET für Windows Store-Apps

Unterstützt in: Windows 8

.NET für Windows Phone-Apps

Unterstützt in: Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core-Rolle wird nicht unterstützt), Windows Server 2008 R2 (Server Core-Rolle wird mit SP1 oder höher unterstützt; Itanium wird nicht unterstützt)

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

Alle öffentlichen static (Shared in Visual Basic)-Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.

Community-Beiträge

HINZUFÜGEN
Anzeigen:
© 2014 Microsoft