StateManagedCollection.CreateKnownType(Int32) Método

Definición

Cuando se reemplaza en una clase derivada, crea una instancia de una clase que implementa IStateManager. El tipo de objeto creado se basa en el miembro especificado de la colección devuelto por el método 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

Parámetros

index
Int32

Índice, procedente de la lista ordenada de tipos devuelta por GetKnownTypes(), del tipo de IStateManager que se va a crear.

Devoluciones

Object

Instancia de una clase derivada de IStateManager, según el parámetro index proporcionado.

Excepciones

En todos los casos cuando no se invalida en una clase derivada.

Ejemplos

En el ejemplo de código siguiente se muestra cómo una clase fuertemente tipada StateManagedCollection implementa el CreateKnownType método . La CycleCollection implementación de CreateKnownType devuelve la instancia predeterminada de un Bicycle objeto o Tricycle , en función del índice pasado. Este ejemplo de código forma parte de un ejemplo más grande proporcionado para la StateManagedCollection clase .

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

Comentarios

La CreateKnownType colección llama internamente al StateManagedCollection método en su implementación del StateManagedCollection.IStateManager.LoadViewState método . Las colecciones derivadas invalidan el CreateKnownType método para devolver una instancia predeterminada del IStateManager tipo identificado por el proporcionado index, que se asigna a uno de los tipos devueltos por el GetKnownTypes método .

Se aplica a

Consulte también