Exporter (0) Imprimer
Développer tout
Cet article a fait l'objet d'une traduction automatique. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte. Informations supplémentaires.
Traduction
Source

StateManagedCollection, classe

Fournit une classe de base pour toutes les collections fortement typées qui gèrent des objets IStateManager.

System.Object
  System.Web.UI.StateManagedCollection
    En savoir plus...

Espace de noms :  System.Web.UI
Assembly :  System.Web (dans System.Web.dll)

public abstract class StateManagedCollection : IList, 
	ICollection, IEnumerable, IStateManager

Le type StateManagedCollection expose les membres suivants.

  NomDescription
Méthode protégéeStateManagedCollectionInitialise une nouvelle instance de la classe StateManagedCollection.
Début

  NomDescription
Propriété publiqueCountObtient le nombre d'éléments contenus dans la collection StateManagedCollection.
Début

  NomDescription
Méthode publiqueClearSupprime tous les éléments de la collection StateManagedCollection.
Méthode publiqueCopyToCopie les éléments de la collection StateManagedCollection dans un tableau, en commençant au niveau d'un index de tableau particulier.
Méthode protégéeCreateKnownTypeEn cas de substitution dans une classe dérivée, crée une instance d'une classe qui implémente IStateManager. Le type d'objet créé repose sur le membre spécifié de la collection retournée par la méthode GetKnownTypes.
Méthode publiqueEquals(Object)Détermine si l'objet spécifié est identique à l'objet actuel. (Hérité de Object.)
Méthode protégéeFinalize Autorise un objet à tenter de libérer des ressources et d'exécuter d'autres opérations de nettoyage avant qu'il ne soit récupéré par l'opération garbage collection. (Hérité de Object.)
Méthode publiqueGetEnumeratorRetourne un itérateur qui itère au sein de la collection StateManagedCollection.
Méthode publiqueGetHashCodeSert de fonction de hachage par défaut. (Hérité de Object.)
Méthode protégéeGetKnownTypesEn cas de substitution dans une classe dérivée, obtient un tableau de types IStateManager que la collection StateManagedCollection peut contenir.
Méthode publiqueGetTypeObtient le Type de l'instance actuelle. (Hérité de Object.)
Méthode protégéeMemberwiseCloneCrée une copie superficielle de l'objet Object actuel. (Hérité de Object.)
Méthode protégéeOnClearEn cas de substitution dans une classe dérivée, exécute une tâche supplémentaire avant que la méthode Clear supprime tous les éléments de la collection.
Méthode protégéeOnClearCompleteEn cas de substitution dans une classe dérivée, exécute une tâche supplémentaire une fois tous les éléments de la collection supprimés par la méthode Clear.
Méthode protégéeOnInsertEn cas de substitution dans une classe dérivée, exécute une tâche supplémentaire avant la méthode Insert ou Add ajoute un élément à la collection.
Méthode protégéeOnInsertCompleteEn cas de substitution dans une classe dérivée, exécute une tâche supplémentaire après que la méthode Insert ou Add a ajouté un élément à la collection.
Méthode protégéeOnRemoveEn cas de substitution dans une classe dérivée, exécute toute tâche supplémentaire avant que la méthode Remove ou RemoveAt supprime l'élément spécifié de la collection.
Méthode protégéeOnRemoveCompleteEn cas de substitution dans une classe dérivée, exécute toute tâche supplémentaire après que la méthode Remove ou RemoveAt a supprimé l'élément spécifié de la collection.
Méthode protégéeOnValidateEn cas de substitution dans une classe dérivée, valide un élément de la collection StateManagedCollection.
Méthode publiqueSetDirtyForce la sérialisation de l'intégralité de la collection StateManagedCollection dans l'état d'affichage.
Méthode protégéeSetDirtyObjectEn cas de substitution dans une classe dérivée, commande à un object contenu dans la collection d'enregistrer l'intégralité de son état dans l'état d'affichage, plutôt que d'enregistrer uniquement des informations relatives aux modifications.
Méthode publiqueToStringRetourne une chaîne qui représente l'objet actif. (Hérité de Object.)
Début

  NomDescription
Méthode d'extension publiqueAsParallelActive la parallélisation d'une requête. (Défini par ParallelEnumerable.)
Méthode d'extension publiqueAsQueryableConvertit un IEnumerable en IQueryable. (Défini par Queryable.)
Méthode d'extension publiqueCast<TResult>Effectue un cast des éléments d'un IEnumerable vers le type spécifié. (Défini par Enumerable.)
Méthode d'extension publiqueOfType<TResult>Filtre les éléments d'un IEnumerable en fonction du type spécifié. (Défini par Enumerable.)
Début

  NomDescription
Implémentation d'interface explicitePropriété privéeICollection.CountInfrastructure. Obtient le nombre d'éléments contenus dans la collection StateManagedCollection.
Implémentation d'interface explicitePropriété privéeICollection.IsSynchronizedInfrastructure. Obtient une valeur indiquant si la collection StateManagedCollection est synchronisée (thread-safe). Cette méthode retourne false dans tous les cas.
Implémentation d'interface explicitePropriété privéeICollection.SyncRootInfrastructure. Obtient un objet qui peut être utilisé pour synchroniser l'accès à la collection StateManagedCollection. Cette méthode retourne null dans tous les cas.
Implémentation d'interface expliciteMéthode privéeIEnumerable.GetEnumeratorInfrastructure. Retourne un itérateur qui itère au sein de la collection StateManagedCollection.
Implémentation d'interface expliciteMéthode privéeIList.AddAjoute un élément à la collection StateManagedCollection.
Implémentation d'interface expliciteMéthode privéeIList.ClearInfrastructure. Supprime tous les éléments de la collection StateManagedCollection.
Implémentation d'interface expliciteMéthode privéeIList.ContainsDétermine si la collection StateManagedCollection contient une valeur spécifique.
Implémentation d'interface expliciteMéthode privéeIList.IndexOfDétermine l'index d'un élément spécifié de la collection StateManagedCollection.
Implémentation d'interface expliciteMéthode privéeIList.InsertInsère un élément dans la collection StateManagedCollection à l'index spécifié.
Implémentation d'interface explicitePropriété privéeIList.IsFixedSizeInfrastructure. Obtient une valeur indiquant si la collection StateManagedCollection est de taille fixe. Cette méthode retourne false dans tous les cas.
Implémentation d'interface explicitePropriété privéeIList.IsReadOnlyInfrastructure. Obtient une valeur indiquant si la collection StateManagedCollection est en lecture seule.
Implémentation d'interface explicitePropriété privéeIList.ItemInfrastructure. Obtient l'élément IStateManager à l'index spécifié.
Implémentation d'interface expliciteMéthode privéeIList.RemoveSupprime la première occurrence de l'objet spécifié dans la collection StateManagedCollection.
Implémentation d'interface expliciteMéthode privéeIList.RemoveAtSupprime l'élément IStateManager au niveau de l'index spécifié.
Implémentation d'interface explicitePropriété privéeIStateManager.IsTrackingViewStateObtient une valeur indiquant si la collection StateManagedCollection enregistre les modifications apportées à son état d'affichage.
Implémentation d'interface expliciteMéthode privéeIStateManager.LoadViewStateRestaure l'état d'affichage précédemment enregistré de la collection StateManagedCollection et les éléments IStateManager qu'elle contient.
Implémentation d'interface expliciteMéthode privéeIStateManager.SaveViewStateEnregistre les modifications apportées à la collection StateManagedCollection et à chaque objet IStateManager qu'elle contient, depuis la publication de la page sur le serveur.
Implémentation d'interface expliciteMéthode privéeIStateManager.TrackViewStateCommande à la collection StateManagedCollection et à chacun des objets IStateManager qu'elle contient de procéder au suivi des modifications apportées à leur état d'affichage afin qu'ils puissent être rendus persistants au fil des requêtes d'une même page.
Début

La classe StateManagedCollection constitue la classe de base pour toutes les collections fortement typées qui stockent des éléments IStateManager, notamment DataControlFieldCollection, ParameterCollection, StyleCollection et TreeNodeBindingCollection. La collection StateManagedCollection gère son propre état ainsi que l'état des éléments qu'elle contient. Par conséquent, un appel à SaveViewState enregistre l'état de la collection et l'état de tous les éléments qu'elle contient actuellement.

Les méthodes les plus importantes à envisager dans le cas d'une dérivation de la classe StateManagedCollection sont CreateKnownType, GetKnownTypes, OnValidate, SetDirty et SetDirtyObject. Les méthodes CreateKnownType et GetKnownTypes sont utilisées pour stocker un index dans l'état d'affichage du type d'un élément contenu. Stocker un index plutôt qu'un nom de type qualifié complet améliore les performances. La méthode OnValidate est appelée à chaque fois que les éléments de la collection sont manipulés, et valide les éléments selon des règles métier. Actuellement, l'implémentation de la méthode OnValidate interdit le stockage d'objets null dans la collection ; toutefois, vous pouvez substituer cette méthode pour définir votre propre comportement de validation dans un type dérivé. La méthode SetDirty force la sérialisation de l'intégralité de la collection dans l'état d'affichage, plutôt que la seule sérialisation des modifications apportées à l'état depuis le dernier chargement. SetDirtyObject est une méthode abstraite que vous pouvez implémenter pour exécuter ce même comportement au niveau de l'élément.

Note de sécuritéNote de sécurité

StateManagedCollection stocke les noms de types qualifiés d'assembly des éléments de collection dans l'état d'affichage. Un visiteur du site peut décoder l'état d'affichage et récupérer le nom de type. Si ce scénario crée un problème de sécurité dans votre site Web, vous pouvez chiffrer manuellement le nom de type avant de le placer dans l'état d'affichage.

L'exemple de code suivant montre comment dériver une classe de collection fortement typée de StateManagedCollection pour contenir des objets IStateManager. Dans cet exemple, le CycleCollection est dérivé pour contenir des instances de la classe abstraite Cycle, qui peuvent consister en des objets Bicycle ou Tricycle. La classe Cycle implémente l'interface IStateManager, car elle stocke la valeur de la propriété CycleColor dans l'état d'affichage.


namespace Samples.AspNet.CS.Controls {

    using System;
    using System.Security.Permissions;
    using System.Collections;
    using System.ComponentModel;
    using System.Drawing;           
    using System.Web;
    using System.Web.UI;            
    //////////////////////////////////////////////////////////////
    //
    // The strongly typed CycleCollection class is a collection
    // that contains Cycle class instances, which implement the
    // IStateManager interface.
    //
    //////////////////////////////////////////////////////////////
    [AspNetHostingPermission(SecurityAction.Demand, 
        Level=AspNetHostingPermissionLevel.Minimal)]
    public sealed class CycleCollection : StateManagedCollection {

        private static readonly Type[] _typesOfCycles 
            = new Type[] { typeof(Bicycle), typeof(Tricycle) };

        protected override object CreateKnownType(int index) {
            switch(index) {
                case 0:
                    return new Bicycle();
                case 1:
                    return new Tricycle();                    
                default:
                    throw new ArgumentOutOfRangeException("Unknown Type");
            }            
        }

        protected override Type[] GetKnownTypes() {
            return _typesOfCycles;
        }

        protected override void SetDirtyObject(object o) {
            ((Cycle)o).SetDirty();
        }

    }
    //////////////////////////////////////////////////////////////
    //
    // The abstract Cycle class represents bicycles and tricycles.
    //
    //////////////////////////////////////////////////////////////
    public abstract class Cycle : IStateManager {

        protected internal Cycle(int numWheels) : this(numWheels, "Red"){ }

        protected internal Cycle(int numWheels, String color) {    
            numberOfWheels = numWheels;
            CycleColor = color;
        }

        private int numberOfWheels = 0;
        public int NumberOfWheels {
            get { return numberOfWheels; }
        }

        public string CycleColor {
            get { 
                object o = ViewState["Color"];
                return (null == o) ? String.Empty : o.ToString() ;
            }
            set {
                ViewState["Color"] = value;            
            }        
        }

        internal void SetDirty() {
            ViewState.SetDirty(true);
        }

        // Because Cycle does not derive from Control, it does not 
        // have access to an inherited view state StateBag object.
        private StateBag viewState;
        private StateBag ViewState {
            get {
                if (viewState == null) {
                    viewState = new StateBag(false);
                    if (isTrackingViewState) {
                        ((IStateManager)viewState).TrackViewState();
                    }
                }
                return viewState;
            }
        }

        // The IStateManager implementation.
        private bool isTrackingViewState;
        bool IStateManager.IsTrackingViewState {
            get {
                return isTrackingViewState;
            }
        }

        void IStateManager.LoadViewState(object savedState) {
            object[] cycleState = (object[]) savedState;

            // In SaveViewState, an array of one element is created.
            // Therefore, if the array passed to LoadViewState has 
            // more than one element, it is invalid.
            if (cycleState.Length != 1) {
                throw new ArgumentException("Invalid Cycle View State");
            }

            // Call LoadViewState on the StateBag object.
            ((IStateManager)ViewState).LoadViewState(cycleState[0]);
        }

        // Save the view state by calling the StateBag's SaveViewState
        // method.
        object IStateManager.SaveViewState() {
            object[] cycleState = new object[1];

            if (viewState != null) {
                cycleState[0] = ((IStateManager)viewState).SaveViewState();
            }
            return cycleState;
        }

        // Begin tracking view state. Check the private variable, because 
        // if the view state has not been accessed or set, then it is not  
        // being used and there is no reason to store any view state.
        void IStateManager.TrackViewState() {
            isTrackingViewState = true;
            if (viewState != null) {
                ((IStateManager)viewState).TrackViewState();
            }
        }        
    }

    public sealed class Bicycle : Cycle {

        // Create a red Cycle with two wheels.
        public Bicycle() : base(2) {}    
    }

    public sealed class Tricycle : Cycle {

        // Create a red Cycle with three wheels.
        public Tricycle() : base(3) {}
    }

}


.NET Framework

Pris en charge dans : 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0

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 (rôle principal du serveur non pris en charge), Windows Server 2008 R2 (rôle principal du serveur pris en charge avec SP1 ou version ultérieure ; Itanium non pris en charge)

Le .NET Framework ne prend pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.

Tous les membres static (Shared en Visual Basic) publics de ce type sont thread-safe. Il n'est pas garanti que les membres d'instance soient thread-safe.

Ajouts de la communauté

AJOUTER
Microsoft réalise une enquête en ligne pour recueillir votre opinion sur le site Web de MSDN. Si vous choisissez d’y participer, cette enquête en ligne vous sera présentée lorsque vous quitterez le site Web de MSDN.

Si vous souhaitez y participer,
Afficher:
© 2014 Microsoft