StateManagedCollectionとは? わかりやすく解説

StateManagedCollection クラス

メモ : このクラスは、.NET Framework version 2.0新しく追加されたものです。

IStateManager オブジェクト管理する厳密に指定されすべてのコレクション基本クラス提供します

名前空間: System.Web.UI
アセンブリ: System.Web (system.web.dll 内)
構文構文

Public MustInherit Class
 StateManagedCollection
    Implements IList, ICollection, IEnumerable, IStateManager
Dim instance As StateManagedCollection
public abstract class StateManagedCollection
 : IList, ICollection, IEnumerable, 
    IStateManager
public ref class StateManagedCollection abstract
 : IList, ICollection, IEnumerable, 
    IStateManager
public abstract class StateManagedCollection
 implements IList, ICollection, 
    IEnumerable, IStateManager
public abstract class StateManagedCollection
 implements IList, ICollection, 
    IEnumerable, IStateManager
解説解説

StateManagedCollection クラスは、IStateManager 要素格納される厳密に指定されすべてのコレクション基本クラスです。たとえば、DataControlFieldCollection、ParameterCollection、StyleCollection、TreeNodeBindingCollection などがありますStateManagedCollection コレクションは、それ自身の状態と含まれる要素の状態と管理します。したがって、System.Web.UI.IStateManager.SaveViewState の呼び出しによって、そのコレクションの状態と、そのコレクションに現在格納されているすべての要素の状態が保存されます。

StateManagedCollection クラスからの派生において、注意要する重要なメソッドは CreateKnownType、GetKnownTypes、OnValidate、SetDirty、および SetDirtyObject です。CreateKnownType メソッドGetKnownTypes メソッドは、コレクション要素の型のインデックスビューステート格納する目的使用されます。全修型名ではなくインデックス格納することにより、パフォーマンス向上しますOnValidate メソッドは、コレクション要素操作されるときに呼び出されビジネス ルールに従ってその要素検証します。現在、OnValidate メソッド実装により、null 参照 (Visual Basic では Nothing) オブジェクトコレクション格納できないよになっていますが、このメソッドオーバーライドすることにより、派生型において独自の検証動作を定義できますSetDirty メソッドは、前回読み込み以降、状態に対して行われた変更のみをシリアル化するのではなく強制的にコレクション全体ビューステートシリアル化ます。SetDirtyObject メソッドは、要素レベルでこの同じ動作実行するために実装できる抽象メソッドです。

注意に関するメモ注意

StateManagedCollection は、コレクション項目のアセンブリ修飾型名ビューステート格納しますサイト訪問者は、ビューステートデコードして型名取得できますこのようにすると Web サイトセキュリティ上の問題がある場合は、手動型名暗号化してからビューステート格納できます

使用例使用例

IStateManager オブジェクト格納する厳密に指定されコレクション クラスStateManagedCollection から派生して作成する方法次のコード例示します。この例では、CycleCollection は、Bicycle オブジェクトTricycle オブジェクト両方を含む、抽象 Cycle クラスインスタンス格納するための派生クラスです。Cycle クラスは、ビューステートCycleColor プロパティ値を格納するため、IStateManager インターフェイス実装しています。

Imports System
Imports System.Security.Permissions
Imports System.Collections
Imports System.ComponentModel
Imports System.Drawing
Imports System.Web
Imports System.Web.UI
 
Namespace Samples.AspNet.VB.Controls
    '////////////////////////////////////////////////////////////
    '
    ' 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 NotInheritable Class
 CycleCollection
        Inherits StateManagedCollection

        Private Shared _typesOfCycles() As
 Type = _
            {GetType(Bicycle), GetType(Tricycle)}

        Protected Overrides Function
 CreateKnownType(ByVal index As Integer)
 As Object
            Select Case index
                Case 0
                    Return New Bicycle()
                Case 1
                    Return New Tricycle()
                Case Else
                    Throw New ArgumentOutOfRangeException("Unknown
 Type")
            End Select

        End Function


        Protected Overrides Function
 GetKnownTypes() As Type()
            Return _typesOfCycles

        End Function


        Protected Overrides Sub
 SetDirtyObject(ByVal o As Object)
            CType(o, Cycle).SetDirty()

        End Sub
    End Class
    '////////////////////////////////////////////////////////////
    '
    ' The abstract Cycle class represents bicycles and tricycles.
    '
    '////////////////////////////////////////////////////////////

    MustInherit Public Class
 Cycle
        Implements IStateManager


        Friend Protected Sub
 New(ByVal numWheels As
 Integer) 
            MyClass.New(numWheels, "Red")

        End Sub

        Friend Protected Sub
 New(ByVal numWheels As
 Integer, ByVal color As String) 
            numOfWheels = numWheels
            CycleColor = color

        End Sub

        Private numOfWheels As Integer
 = 0    
        Public ReadOnly Property
 NumberOfWheels() As Integer 
            Get
                Return numOfWheels
            End Get
        End Property 

        Public Property CycleColor() As
 String 
            Get
                Dim o As Object
 = ViewState("Color")
                If o Is Nothing
 Then 
                    Return String.Empty
                Else  
                    Return o.ToString()
                End If            
            End Get
            Set
                ViewState("Color") = value
            End Set
        End Property


        Friend Sub SetDirty() 
            ViewState.SetDirty(True)

        End Sub

        ' Because Cycle does not derive from Control, it does not 
        ' have access to an inherited view state StateBag object.
        Private cycleViewState As StateBag

        Private ReadOnly Property
 ViewState() As StateBag 
            Get
                If cycleViewState Is Nothing
 Then
                    cycleViewState = New StateBag(False)
                    If trackingViewState Then
                        CType(cycleViewState, IStateManager).TrackViewState()
                    End If
                End If
                Return cycleViewState
            End Get
        End Property

        ' The IStateManager implementation.
        Private trackingViewState As Boolean

        ReadOnly Property IsTrackingViewState()
 As Boolean _
            Implements IStateManager.IsTrackingViewState
            Get
                Return trackingViewState
            End Get
        End Property


        Sub LoadViewState(ByVal savedState
 As Object) _
            Implements IStateManager.LoadViewState
            Dim cycleState As Object()
 = CType(savedState, Object())

            ' 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 Then
                Throw New ArgumentException("Invalid
 Cycle View State")
            End If

            ' Call LoadViewState on the StateBag object.
            CType(ViewState, IStateManager).LoadViewState(cycleState(0))

        End Sub


        ' Save the view state by calling the StateBag's SaveViewState
        ' method.
        Function SaveViewState() As Object
 Implements IStateManager.SaveViewState
            Dim cycleState(0) As Object

            If Not (cycleViewState Is
 Nothing) Then
                cycleState(0) = _
                CType(cycleViewState, IStateManager).SaveViewState()
            End If
            Return cycleState

        End Function


        ' 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.
        Sub TrackViewState() Implements IStateManager.TrackViewState
            trackingViewState = True
            If Not (cycleViewState Is
 Nothing) Then
                CType(cycleViewState, IStateManager).TrackViewState()
            End If

        End Sub
    End Class


    Public NotInheritable Class
 Bicycle
        Inherits Cycle


        ' Create a red Cycle with two wheels.
        Public Sub New()
            MyBase.New(2)

        End Sub
    End Class

    Public NotInheritable Class
 Tricycle
        Inherits Cycle


        ' Create a red Cycle with three wheels.
        Public Sub New()
            MyBase.New(3)

        End Sub
    End Class
End Namespace
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) {}
    }

}
継承階層継承階層
System.Object
  System.Web.UI.StateManagedCollection
     派生クラス
スレッド セーフスレッド セーフ
この型の public static (Visual Basic では Shared) メンバはすべて、スレッド セーフです。インスタンス メンバ場合は、スレッド セーフであるとは限りません。
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
StateManagedCollection メンバ
System.Web.UI 名前空間
IStateManager インターフェイス
StateBag クラス

StateManagedCollection コンストラクタ


StateManagedCollection プロパティ


パブリック プロパティパブリック プロパティ

  名前 説明
パブリック プロパティ Count StateManagedCollection コレクション格納されている要素の数を取得します
明示的インターフェイスの実装明示的インターフェイス実装
  名前 説明
インターフェイスの明示的な実装 System.Collections.ICollection.Count StateManagedCollection コレクション格納されている要素の数を取得します
インターフェイスの明示的な実装 System.Collections.ICollection.IsSynchronized StateManagedCollection コレクション同期されている (スレッド セーフである) かどうかを示す値を取得します。このメソッドは、常に false返します
インターフェイスの明示的な実装 System.Collections.ICollection.SyncRoot StateManagedCollection コレクションへのアクセス同期するために使用できるオブジェクト取得します。このメソッドは、常に null 参照 (Visual Basic では Nothing) を返します
インターフェイスの明示的な実装 System.Collections.IList.IsFixedSize StateManagedCollection コレクション固定サイズかどうかを示す値を取得します。このメソッドは、常に false返します
インターフェイスの明示的な実装 System.Collections.IList.IsReadOnly StateManagedCollection コレクション読み取り専用かどうかを示す値を取得します
インターフェイスの明示的な実装 System.Collections.IList.Item 指定したインデックス位置にある IStateManager 要素取得します
インターフェイスの明示的な実装 System.Web.UI.IStateManager.IsTrackingViewState StateManagedCollection コレクションビューステートへの変更保存しているかどうかを示す値を取得します
参照参照

関連項目

StateManagedCollection クラス
System.Web.UI 名前空間
IStateManager インターフェイス
StateBag クラス

StateManagedCollection メソッド


パブリック メソッドパブリック メソッド

プロテクト メソッドプロテクト メソッド
  名前 説明
プロテクト メソッド CreateKnownType 派生クラスオーバーライドされた場合、IStateManager を実装するクラスインスタンス作成します作成されるオブジェクトの型は、GetKnownTypes メソッドから返されるコレクション指定されメンバに基づきます。
プロテクト メソッド Finalize  Objectガベージ コレクションにより収集される前に、その Objectリソース解放しその他のクリーンアップ操作実行できるようにします。 ( Object から継承されます。)
プロテクト メソッド GetKnownTypes 派生クラスオーバーライドされた場合StateManagedCollection コレクション格納できる IStateManager 型の配列取得します
プロテクト メソッド MemberwiseClone  現在の Object簡易コピー作成します。 ( Object から継承されます。)
プロテクト メソッド OnClear 派生クラスオーバーライドされた場合Clear メソッドによってコレクションからすべての項目が削除される前の補足作業実行します
プロテクト メソッド OnClearComplete 派生クラスオーバーライドされた場合Clear メソッドによってコレクションからすべての項目が削除された後の補足作業実行します
プロテクト メソッド OnInsert 派生クラスオーバーライドされた場合、 System.Collections.IList.Insert メソッドまたは System.Collections.IList.Add メソッドによってコレクションに項目が追加される前の補足作業実行します
プロテクト メソッド OnInsertComplete 派生クラスオーバーライドされた場合System.Collections.IList.Insert メソッドまたは System.Collections.IList.Add メソッドによってコレクションに項目が追加された後の補足作業実行します
プロテクト メソッド OnRemove 派生クラスオーバーライドされた場合、System.Collections.IList.Remove メソッドまたは System.Collections.IList.RemoveAt メソッドによって、指定された項目がコレクションから削除される前の補足作業実行します
プロテクト メソッド OnRemoveComplete 派生クラスオーバーライドされた場合System.Collections.IList.Remove メソッドまたは System.Collections.IList.RemoveAt メソッドによって、指定された項目がコレクションから削除された後の補足作業実行します
プロテクト メソッド OnValidate 派生クラスオーバーライドされた場合StateManagedCollection コレクション要素検証します。
プロテクト メソッド SetDirtyObject 派生クラスオーバーライドされた場合コレクション格納されている object に、変更情報だけでなく、その状態全体ビューステート記録するよう指示します
明示的インターフェイスの実装明示的インターフェイス実装
  名前 説明
インターフェイスの明示的な実装 System.Collections.IEnumerable.GetEnumerator StateManagedCollection コレクション反復処理する反復子返します
インターフェイスの明示的な実装 System.Collections.IList.Add 項目を StateManagedCollection コレクション追加します
インターフェイスの明示的な実装 System.Collections.IList.Clear StateManagedCollection コレクションからすべての項目を削除します
インターフェイスの明示的な実装 System.Collections.IList.Contains StateManagedCollection コレクション特定の値格納されているかどうか判断します
インターフェイスの明示的な実装 System.Collections.IList.IndexOf StateManagedCollection コレクション内での指定した項目のインデックス調べます
インターフェイスの明示的な実装 System.Collections.IList.Insert StateManagedCollection コレクション内の指定したインデックス位置に項目を挿入します
インターフェイスの明示的な実装 System.Collections.IList.Remove 指定したオブジェクトのうち、StateManagedCollection コレクション最初に出現したオブジェクト削除します
インターフェイスの明示的な実装 System.Collections.IList.RemoveAt 指定したインデックス位置にある IStateManager 要素削除します
インターフェイスの明示的な実装 System.Web.UI.IStateManager.LoadViewState StateManagedCollection コレクションと、そのコレクション格納されている IStateManager 項目の保存されているビューステート復元します。
インターフェイスの明示的な実装 System.Web.UI.IStateManager.SaveViewState ページサーバーポストバックされた時間以降発生したStateManagedCollection コレクションと各 IStateManager オブジェクトへの変更保存します
インターフェイスの明示的な実装 System.Web.UI.IStateManager.TrackViewState StateManagedCollection コレクションとその各 IStateManager オブジェクトビューステートへの変更追跡させ、同じページ対す要求間でこれらが永続化されるようにします。
参照参照

関連項目

StateManagedCollection クラス
System.Web.UI 名前空間
IStateManager インターフェイス
StateBag クラス

StateManagedCollection メンバ

IStateManager オブジェクト管理する厳密に指定されすべてのコレクション基本クラス提供します

StateManagedCollection データ型公開されるメンバを以下の表に示します


プロテクト コンストラクタプロテクト コンストラクタ
  名前 説明
プロテクト メソッド StateManagedCollection StateManagedCollection クラス新しインスタンス初期化します。
パブリック プロパティパブリック プロパティ
  名前 説明
パブリック プロパティ Count StateManagedCollection コレクション格納されている要素の数を取得します
パブリック メソッドパブリック メソッド
プロテクト メソッドプロテクト メソッド
  名前 説明
プロテクト メソッド CreateKnownType 派生クラスオーバーライドされた場合IStateManager実装するクラスインスタンス作成します作成されるオブジェクトの型は、GetKnownTypes メソッドから返されるコレクション指定されメンバに基づきます。
プロテクト メソッド Finalize  Objectガベージ コレクションにより収集される前に、その Objectリソース解放しその他のクリーンアップ操作実行できるようにします。 (Object から継承されます。)
プロテクト メソッド GetKnownTypes 派生クラスオーバーライドされた場合StateManagedCollection コレクション格納できる IStateManager 型の配列取得します
プロテクト メソッド MemberwiseClone  現在の Object簡易コピー作成します。 (Object から継承されます。)
プロテクト メソッド OnClear 派生クラスオーバーライドされた場合Clear メソッドによってコレクションからすべての項目が削除される前の補足作業実行します
プロテクト メソッド OnClearComplete 派生クラスオーバーライドされた場合Clear メソッドによってコレクションからすべての項目が削除された後の補足作業実行します
プロテクト メソッド OnInsert 派生クラスオーバーライドされた場合、 System.Collections.IList.Insert メソッドまたは System.Collections.IList.Add メソッドによってコレクションに項目が追加される前の補足作業実行します
プロテクト メソッド OnInsertComplete 派生クラスオーバーライドされた場合System.Collections.IList.Insert メソッドまたは System.Collections.IList.Add メソッドによってコレクションに項目が追加された後の補足作業実行します
プロテクト メソッド OnRemove 派生クラスオーバーライドされた場合、System.Collections.IList.Remove メソッドまたは System.Collections.IList.RemoveAt メソッドによって、指定された項目がコレクションから削除される前の補足作業実行します
プロテクト メソッド OnRemoveComplete 派生クラスオーバーライドされた場合System.Collections.IList.Remove メソッドまたは System.Collections.IList.RemoveAt メソッドによって、指定された項目がコレクションから削除された後の補足作業実行します
プロテクト メソッド OnValidate 派生クラスオーバーライドされた場合StateManagedCollection コレクション要素検証します。
プロテクト メソッド SetDirtyObject 派生クラスオーバーライドされた場合コレクション格納されている object に、変更情報だけでなく、その状態全体ビューステート記録するよう指示します
明示的インターフェイスの実装明示的インターフェイス実装
  名前 説明
インターフェイスの明示的な実装 System.Collections.IEnumerable.GetEnumerator StateManagedCollection コレクション反復処理する反復子返します
インターフェイスの明示的な実装 System.Collections.IList.Add 項目を StateManagedCollection コレクション追加します
インターフェイスの明示的な実装 System.Collections.IList.Clear StateManagedCollection コレクションからすべての項目を削除します
インターフェイスの明示的な実装 System.Collections.IList.Contains StateManagedCollection コレクション特定の値格納されているかどうか判断します
インターフェイスの明示的な実装 System.Collections.IList.IndexOf StateManagedCollection コレクション内での指定した項目のインデックス調べます
インターフェイスの明示的な実装 System.Collections.IList.Insert StateManagedCollection コレクション内の指定したインデックス位置に項目を挿入します
インターフェイスの明示的な実装 System.Collections.IList.Remove 指定したオブジェクトのうち、StateManagedCollection コレクション最初に出現したオブジェクト削除します
インターフェイスの明示的な実装 System.Collections.IList.RemoveAt 指定したインデックス位置にある IStateManager 要素削除します
インターフェイスの明示的な実装 System.Web.UI.IStateManager.LoadViewState StateManagedCollection コレクションと、そのコレクション格納されている IStateManager 項目の保存されているビューステート復元します。
インターフェイスの明示的な実装 System.Web.UI.IStateManager.SaveViewState ページサーバーポストバックされた時間以降発生したStateManagedCollection コレクションと各 IStateManager オブジェクトへの変更保存します
インターフェイスの明示的な実装 System.Web.UI.IStateManager.TrackViewState StateManagedCollection コレクションとその各 IStateManager オブジェクトビューステートへの変更追跡させ、同じページ対す要求間でこれらが永続化されるようにします。
インターフェイスの明示的な実装 System.Collections.ICollection.Count StateManagedCollection コレクション格納されている要素の数を取得します
インターフェイスの明示的な実装 System.Collections.ICollection.IsSynchronized StateManagedCollection コレクション同期されている (スレッド セーフである) かどうかを示す値を取得します。このメソッドは、常に false返します
インターフェイスの明示的な実装 System.Collections.ICollection.SyncRoot StateManagedCollection コレクションへのアクセス同期するために使用できるオブジェクト取得します。このメソッドは、常に null 参照 (Visual Basic では Nothing) を返します
インターフェイスの明示的な実装 System.Collections.IList.IsFixedSize StateManagedCollection コレクション固定サイズかどうかを示す値を取得します。このメソッドは、常に false返します
インターフェイスの明示的な実装 System.Collections.IList.IsReadOnly StateManagedCollection コレクション読み取り専用かどうかを示す値を取得します
インターフェイスの明示的な実装 System.Collections.IList.Item 指定したインデックス位置にある IStateManager 要素取得します
インターフェイスの明示的な実装 System.Web.UI.IStateManager.IsTrackingViewState StateManagedCollection コレクションビューステートへの変更保存しているかどうかを示す値を取得します
参照参照

関連項目

StateManagedCollection クラス
System.Web.UI 名前空間
IStateManager インターフェイス
StateBag クラス



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「StateManagedCollection」の関連用語

StateManagedCollectionのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



StateManagedCollectionのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2025 Microsoft.All rights reserved.

©2025 GRAS Group, Inc.RSS