次の方法で共有


StateManagedCollection.CreateKnownType(Int32) メソッド

定義

派生クラスでオーバーライドされた場合、IStateManager を実装するクラスのインスタンスを作成します。 作成されるオブジェクトの型は、GetKnownTypes() メソッドから返されるコレクションの指定されたメンバーに基づきます。

protected:
 virtual System::Object ^ CreateKnownType(int index);
protected virtual object CreateKnownType (int index);
abstract member CreateKnownType : int -> obj
override this.CreateKnownType : int -> obj
Protected Overridable Function CreateKnownType (index As Integer) As Object

パラメーター

index
Int32

GetKnownTypes() から返される、順番に並べられた型リストに含まれる作成対象の IStateManager の型のインデックス。

戻り値

Object

指定された index に基づいた IStateManager の派生クラスのインスタンス。

例外

派生クラスでオーバーライドされていないすべての場合。

次のコード例は、厳密に型指定された StateManagedCollection クラスがメソッドを実装する方法を CreateKnownType 示しています。 実装CreateKnownTypeではCycleCollection、渡されたインデックスに応じて、a Bicycle またはTricycleオブジェクトの既定のインスタンスが返されます。 このコード例は、StateManagedCollection クラスのために提供されている大規模な例の一部です。

//////////////////////////////////////////////////////////////
//
// 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 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

注釈

メソッドは CreateKnownType 、メソッドの StateManagedCollection 実装でコレクションによって内部的に StateManagedCollection.IStateManager.LoadViewState 呼び出されます。 派生コレクションは、指定された型によってindex識別される型の既定のIStateManagerインスタンスを返すようにメソッドをオーバーライドCreateKnownTypeします。このインスタンスは、メソッドによってGetKnownTypes返される型のいずれかにマップされます。

適用対象

こちらもご覧ください