StateManagedCollection.CreateKnownType(Int32) Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Při přepsání v odvozené třídě vytvoří instanci třídy, která implementuje IStateManager. Typ vytvořeného objektu je založen na zadaném členu kolekce vrácené metodou 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
Parametry
- index
- Int32
Index z seřazeného seznamu typů vrácených typem GetKnownTypes()IStateManager vytvoření.
Návraty
Instance třídy odvozené od IStateManager, podle poskytnuté index .
Výjimky
Ve všech případech, kdy není přepsán v odvozené třídě.
Příklady
Následující příklad kódu ukazuje, jak třída silného typu StateManagedCollection implementuje metodu CreateKnownType . Implementace CycleCollectionCreateKnownType vrátí výchozí instanci objektu Bicycle nebo objektu Tricycle v závislosti na předaném indexu. Tento příklad kódu je součástí většího příkladu uvedeného pro třídu 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
Poznámky
Metoda CreateKnownType je volána interně StateManagedCollection kolekcí v její implementaci StateManagedCollection.IStateManager.LoadViewState metody. Odvozené kolekce přepíší metodu CreateKnownType pro vrácení výchozí instance IStateManager typu identifikovaného zadaným index, který se mapuje na jeden z typů vrácených metodou GetKnownTypes .