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é z IStateManager, podle poskytnuté.index
Výjimky
Ve všech případech, kdy není přepsáno v odvozené třídě.
Příklady
Následující příklad kódu ukazuje, jak třída silného StateManagedCollection typu implementuje metodu CreateKnownType . Implementace CycleCollection
CreateKnownType vrátí výchozí instanci objektu nebo Tricycle
objektu Bicycle
v závislosti na předaném indexu. Tento příklad kódu je součástí většího příkladu zadaného StateManagedCollection pro třídu.
//////////////////////////////////////////////////////////////
//
// 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 jeho implementaci StateManagedCollection.IStateManager.LoadViewState metody. Odvozené kolekce přepíší metodu CreateKnownType tak, aby vrátila výchozí instanci IStateManager typu identifikovaného zadaným index
typem, který se mapuje na jeden z typů vrácených metodou GetKnownTypes .