FormatterServices.GetSerializableMembers FormatterServices.GetSerializableMembers FormatterServices.GetSerializableMembers Method

Définition

Retourne tous les membres sérialisables pour une classe particulière.Returns all the serializable members for a particular class.

Surcharges

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

Obtient tous les membres sérialisables pour une classe du Type spécifié.Gets all the serializable members for a class of the specified Type.

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

Obtient tous les membres sérialisables pour une classe du Type spécifié et dans le StreamingContext fourni.Gets all the serializable members for a class of the specified Type and in the provided StreamingContext.

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

Obtient tous les membres sérialisables pour une classe du Type spécifié.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[]

Paramètres

type
Type Type Type

Type sérialisé.The type being serialized.

Retours

Tableau de type MemberInfo des membres non transitoires et non statiques.An array of type MemberInfo of the non-transient, non-static members.

Exceptions

Le paramètre type a la valeur null.The type parameter is null.

L'appelant n'a pas l'autorisation requise.The caller does not have the required permission.

Exemples

L’exemple suivant appelle la GetSerializableMembers méthode à partir d’une implémentation de ISerializable.GetObjectData (méthode).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);
}

Remarques

En règle générale, les membres sérialisables d’une classe sont des membres non transitoires et non statiques telles que les champs et propriétés.Generally, the serializable members of a class are non-transient, non-static members such as fields and properties. Pour être incluses, les propriétés doivent avoir un accesseur Get et un accesseur Set.To be included, properties must have both a getter and a setter. Une classe qui implémente le ISerializable interface ou a une sérialisation substitution n’a pas sérialiser tous ces membres, ou peut sérialiser des membres supplémentaires.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.

Étant donné que le GetSerializableMembers les appels de méthode le Type.GetFields (méthode), il ne retourne pas les champs dans un ordre particulier, tel qu’alphabétique ou ordre de déclaration.Because the GetSerializableMembers method calls the Type.GetFields method, it does not return fields in a particular order, such as alphabetical or declaration order. Votre code ne doit pas dépendre de l’ordre dans lequel les champs sont retournés.Your code must not depend on the order in which fields are returned.

Sécurité

SecurityPermission
pour fournir des services de sérialisation.For providing serialization services. Énumération associée : SerializationFormatter, LinkDemand.Associated enumeration: SerializationFormatter, LinkDemand.

Voir aussi

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

Obtient tous les membres sérialisables pour une classe du Type spécifié et dans le StreamingContext fourni.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[]

Paramètres

type
Type Type Type

Type sérialisé ou cloné.The type being serialized or cloned.

context
StreamingContext StreamingContext StreamingContext

Contexte dans lequel la sérialisation se produit.The context where the serialization occurs.

Retours

Tableau de type MemberInfo des membres non transitoires et non statiques.An array of type MemberInfo of the non-transient, non-static members.

Exceptions

Le paramètre type a la valeur null.The type parameter is null.

L'appelant n'a pas l'autorisation requise.The caller does not have the required permission.

Remarques

En règle générale, les membres sérialisables d’une classe sont des membres non transitoires et non statiques telles que les champs et propriétés.Generally, the serializable members of a class are non-transient, non-static members such as fields and properties. Pour être incluses, les propriétés doivent avoir un accesseur Get et un accesseur Set.To be included, properties must have both a getter and a setter. Une classe qui implémente ISerializable ou a une sérialisation substitution n’a pas sérialiser tous ces membres, ou peut sérialiser des membres supplémentaires.A class that implements ISerializable or has a serialization surrogate does not have to serialize all these members, or can serialize additional members.

Si context inclut le StreamingContextStates.Clone valeur d’énumération, temporaires sont également inclus dans le MemberInfo tableau retourné par cette méthode.If context includes the StreamingContextStates.Clone enumeration value, transient fields are also included in the MemberInfo array returned by this method.

Étant donné que le GetSerializableMembers les appels de méthode le Type.GetFields (méthode), il ne retourne pas les champs dans un ordre particulier, tel qu’alphabétique ou ordre de déclaration.Because the GetSerializableMembers method calls the Type.GetFields method, it does not return fields in a particular order, such as alphabetical or declaration order. Votre code ne doit pas dépendre de l’ordre dans lequel les champs sont retournés.Your code must not depend on the order in which fields are returned.

Sécurité

SecurityPermission
pour fournir des services de sérialisation.For providing serialization services. Énumération associée : SerializationFormatter, LinkDemand.Associated enumeration: SerializationFormatter, LinkDemand.

Voir aussi

S’applique à