StateManagedCollection.CreateKnownType(Int32) Methode

Definitie

Wanneer deze wordt overschreven in een afgeleide klasse, maakt u een exemplaar van een klasse die wordt geïmplementeerd IStateManager. Het type object dat is gemaakt, is gebaseerd op het opgegeven lid van de verzameling die door de GetKnownTypes() methode wordt geretourneerd.

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

Parameters

index
Int32

De index, uit de geordende lijst met typen die worden geretourneerd door GetKnownTypes(), van het type IStateManager dat moet worden gemaakt.

Retouren

Een exemplaar van een klasse die is afgeleid IStateManagervan, volgens de index opgegeven.

Uitzonderingen

In alle gevallen wanneer ze niet worden overschreven in een afgeleide klasse.

Voorbeelden

In het volgende codevoorbeeld ziet u hoe een sterk getypte StateManagedCollection klasse de CreateKnownType methode implementeert. De CycleCollection implementatie van CreateKnownType retourneert het standaardexemplaren van een Bicycle of Tricycle object, afhankelijk van de doorgegeven index. Dit codevoorbeeld maakt deel uit van een groter voorbeeld voor de StateManagedCollection klasse.

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

Opmerkingen

De CreateKnownType methode wordt intern aangeroepen door de StateManagedCollection verzameling in de implementatie van de StateManagedCollection.IStateManager.LoadViewState methode. Afgeleide verzamelingen overschrijven de CreateKnownType methode om een standaardexemplaren te retourneren van het IStateManager type dat is geïdentificeerd door de opgegeven index, die wordt toegewezen aan een van de typen die door de GetKnownTypes methode worden geretourneerd.

Van toepassing op

Zie ook