StateManagedCollection.CreateKnownType(Int32) Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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
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 .