FormatterServices.GetSerializableMembers FormatterServices.GetSerializableMembers FormatterServices.GetSerializableMembers Method

Definition

Gibt alle serialisierbaren Member für eine bestimmte Klasse zurück.Returns all the serializable members for a particular class.

Überlädt

GetSerializableMembers(Type) GetSerializableMembers(Type) GetSerializableMembers(Type)

Ruft alle serialisierbaren Member vom angegebenen Type für eine Klasse ab.Gets all the serializable members for a class of the specified Type.

GetSerializableMembers(Type, StreamingContext) GetSerializableMembers(Type, StreamingContext) GetSerializableMembers(Type, StreamingContext)

Ruft alle serialisierbaren Member vom angegebenen Type und im bereitgestellten StreamingContext für eine Klasse ab.Gets all the serializable members for a class of the specified Type and in the provided StreamingContext.

GetSerializableMembers(Type) GetSerializableMembers(Type) GetSerializableMembers(Type)

Ruft alle serialisierbaren Member vom angegebenen Type für eine Klasse ab.Gets all the serializable members for a class of the specified Type.

public:
 static cli::array <System::Reflection::MemberInfo ^> ^ GetSerializableMembers(Type ^ type);
[System.Security.SecurityCritical]
public static System.Reflection.MemberInfo[] GetSerializableMembers (Type type);
static member GetSerializableMembers : Type -> System.Reflection.MemberInfo[]

Parameter

type
Type Type Type

Der serialisierte Typ.The type being serialized.

Gibt zurück

Ein Array vom Typ MemberInfo der nicht flüchtigen und nicht statischen Member.An array of type MemberInfo of the non-transient, non-static members.

Ausnahmen

Der type-Parameter ist null.The type parameter is null.

Der Aufrufer verfügt nicht über die erforderliche Berechtigung.The caller does not have the required permission.

Beispiele

Im folgenden Beispiel wird die GetSerializableMembers -Methode aus einer Implementierung ISerializable.GetObjectData der-Methode aufgerufen.The following example calls the GetSerializableMembers method from an implementation of ISerializable.GetObjectData method.

public:
    [SecurityPermission(SecurityAction::Demand, SerializationFormatter = true)]
    virtual void GetObjectData(SerializationInfo^ info, StreamingContext context)
    {
        // Serialize the desired values for this class.
        info->AddValue("title", title);

        // Get the set of serializable members for the class and base classes.
        Type^ thisType = this->GetType();
        array<MemberInfo^>^ serializableMembers =
            FormatterServices::GetSerializableMembers(thisType, context);

        // Serialize the base class's fields to the info object.
        for each (MemberInfo^ serializableMember in serializableMembers)
        {
            // Do not serialize fields for this class.
            if (serializableMember->DeclaringType != thisType)
            {
                // Skip this field if it is marked NonSerialized.
                if (!(Attribute::IsDefined(serializableMember,
                    NonSerializedAttribute::typeid)))
                {
                    // Get the value of this field and add it to the
                    // SerializationInfo object.
                    info->AddValue(serializableMember->Name,
                        ((FieldInfo^)serializableMember)->GetValue(this));
                }
            }
        }

        // Call the method below to see the contents of the
        // SerializationInfo object.
        DisplaySerializationInfo(info);
    }
[SecurityPermission(SecurityAction.Demand, SerializationFormatter = true)]
public void GetObjectData(SerializationInfo info, StreamingContext context)
{

    // Serialize the desired values for this class.
    info.AddValue("title", title);

    // Get the set of serializable members for the class and base classes.
    Type thisType = this.GetType();
    MemberInfo[] mi = FormatterServices.GetSerializableMembers(thisType, context);

    // Serialize the base class's fields to the info object.
    for (Int32 i = 0; i < mi.Length; i++)
    {
        // Do not serialize fields for this class.
        if (mi[i].DeclaringType == thisType) continue;

        // Skip this field if it is marked NonSerialized.
        if (Attribute.IsDefined(mi[i], typeof(NonSerializedAttribute))) continue;
     
        // Get the value of this field and add it to the SerializationInfo object.
        info.AddValue(mi[i].Name, ((FieldInfo) mi[i]).GetValue(this));
    }

    // Call the method below to see the contents of the SerializationInfo object.
    DisplaySerializationInfo(info);
}

Hinweise

Im Allgemeinen sind die serialisierbaren Member einer Klasse nicht vorübergehende, nicht statische Member, z. b. Felder und Eigenschaften.Generally, the serializable members of a class are non-transient, non-static members such as fields and properties. Zum einschließen müssen Eigenschaften sowohl über einen Getter als auch über einen Setter verfügen.To be included, properties must have both a getter and a setter. Eine Klasse, die die ISerializable -Schnittstelle implementiert oder einen Serialisierungsersatz besitzt, muss nicht alle diese Member serialisieren, oder es können zusätzliche Member serialisiert werden.A class that implements the ISerializable interface or has a serialization surrogate does not have to serialize all these members, or can serialize additional members.

Da die GetSerializableMembers -Methode die Type.GetFields -Methode aufruft, gibt Sie keine Felder in einer bestimmten Reihenfolge zurück, z. b. alphabetisch oder Deklarations Reihenfolge.Because the GetSerializableMembers method calls the Type.GetFields method, it does not return fields in a particular order, such as alphabetical or declaration order. Der Code darf nicht von der Reihenfolge abhängen, in der Felder zurückgegeben werden.Your code must not depend on the order in which fields are returned.

Sicherheit

SecurityPermission
Zum Bereitstellen von Serialisierungsdiensten.For providing serialization services. Zugehörige Enumeration SerializationFormatter: LinkDemand,.Associated enumeration: SerializationFormatter, LinkDemand.

Siehe auch

GetSerializableMembers(Type, StreamingContext) GetSerializableMembers(Type, StreamingContext) GetSerializableMembers(Type, StreamingContext)

Ruft alle serialisierbaren Member vom angegebenen Type und im bereitgestellten StreamingContext für eine Klasse ab.Gets all the serializable members for a class of the specified Type and in the provided StreamingContext.

public:
 static cli::array <System::Reflection::MemberInfo ^> ^ GetSerializableMembers(Type ^ type, System::Runtime::Serialization::StreamingContext context);
[System.Security.SecurityCritical]
public static System.Reflection.MemberInfo[] GetSerializableMembers (Type type, System.Runtime.Serialization.StreamingContext context);
static member GetSerializableMembers : Type * System.Runtime.Serialization.StreamingContext -> System.Reflection.MemberInfo[]

Parameter

type
Type Type Type

Der serialisierte oder geklonte Typ.The type being serialized or cloned.

context
StreamingContext StreamingContext StreamingContext

Der Kontext, in dem die Serialisierung auftritt.The context where the serialization occurs.

Gibt zurück

Ein Array vom Typ MemberInfo der nicht flüchtigen und nicht statischen Member.An array of type MemberInfo of the non-transient, non-static members.

Ausnahmen

Der type-Parameter ist null.The type parameter is null.

Der Aufrufer verfügt nicht über die erforderliche Berechtigung.The caller does not have the required permission.

Hinweise

Im Allgemeinen sind die serialisierbaren Member einer Klasse nicht vorübergehende, nicht statische Member, z. b. Felder und Eigenschaften.Generally, the serializable members of a class are non-transient, non-static members such as fields and properties. Zum einschließen müssen Eigenschaften sowohl über einen Getter als auch über einen Setter verfügen.To be included, properties must have both a getter and a setter. Eine Klasse, die ISerializable einen Serialisierungsersatz implementiert oder besitzt, muss nicht alle diese Member serialisieren, oder es können zusätzliche Member serialisiert werden.A class that implements ISerializable or has a serialization surrogate does not have to serialize all these members, or can serialize additional members.

Wenn context MemberInfo den StreamingContextStates.Clone -Enumerationswert einschließt, sind auch vorübergehende Felder in dem von dieser Methode zurückgegebenen Array enthalten.If context includes the StreamingContextStates.Clone enumeration value, transient fields are also included in the MemberInfo array returned by this method.

Da die GetSerializableMembers -Methode die Type.GetFields -Methode aufruft, gibt Sie keine Felder in einer bestimmten Reihenfolge zurück, z. b. alphabetisch oder Deklarations Reihenfolge.Because the GetSerializableMembers method calls the Type.GetFields method, it does not return fields in a particular order, such as alphabetical or declaration order. Der Code darf nicht von der Reihenfolge abhängen, in der Felder zurückgegeben werden.Your code must not depend on the order in which fields are returned.

Sicherheit

SecurityPermission
Zum Bereitstellen von Serialisierungsdiensten.For providing serialization services. Zugehörige Enumeration SerializationFormatter: LinkDemand,.Associated enumeration: SerializationFormatter, LinkDemand.

Siehe auch

Gilt für: