Crear una colección de elementos personalizada con C# - Crear una colección de elementos personalizada con C#
Tutorial creado por Patxi Echarte. Extraido de: http://www.eslomas.com/index.php/archives/2005/04/20/coleccion-elementos-personalizada-csharp/
27 de Abril de 2006
Microsoft .Net
1 - Crear una colección de elementos personalizada con C#
Esta clase dispone de un ArrayList interno accesible mediante InnerList que es el que se utiliza para almacenar la información, aunque podemos utilizar otro tipo de datos si lo necesitamos. Dispone también de una forma de acceder a la lista de elementos mediante otra propiedad de nombre List. Si utilizamos esta forma de acceso al ArrayList interno dispondremos de la ventaja de que List genera eventos cuando se añaden o eliminan datos y podremos crear métodos que realicen comprobaciones sobre estos datos.
A continuación se muestra un ejemplo de colección personalizada para almacenar un tipo externo de nombre FacturaLinea, perteneciente al namespace Eslomas.Ejemplos.
using Eslomas.Ejemplos;
public class FacturaLineaCollection : CollectionBase {
Para acceder a los elementos mediante []
public FacturaLinea this[int index]{get{return((FacturaLinea)List[index]);}set{List[index]=value;}}
public int Add(FacturaLinea value){
return( List.Add( value ) );
}
public int IndexOf(FacturaLinea value){
return( List.IndexOf( value ) );
}
public void Insert(int index, FacturaLinea value){
List.Insert( index, value );
}
public void Remove(FacturaLinea value){
List.Remove( value );
}
public bool Contains(FacturaLinea value){
return( List.Contains( value ) );
}
Utilizamos List para acceder a la colección interna, por lo que es necesario
que sobrecarguemos los siguientes métodos que se encargan de comprobar
los datos que llegan
protected override void OnInsert(int index, Object value){
if (value.GetType() != Type.GetType("Eslomas.Ejemplos.FacturaLinea"))
throw new ArgumentException("value must be of type FacturaLinea.", "value");
}
protected override void OnRemove( int index, Object value ) {
if ( value.GetType() != Type.GetType("Eslomas.Ejemplos.FacturaLinea") )
throw new ArgumentException( "value must be of type FacturaLinea.", "value" );
}
protected override void OnSet( int index, Object oldValue, Object newValue ) {
if ( newValue.GetType() != Type.GetType("EsLoMas.Ejemplos.FacturaLinea") )
throw new ArgumentException( "newValue must be of type FacturaLinea.", "newValue" );
}
protected override void OnValidate( Object value ) {
if ( value.GetType() != Type.GetType("Eslomas.Ejemplos.FacturaLinea") )
throw new ArgumentException( "value must be of type FacturaLinea." );
}
}
A continuación se muestra un ejemplo de colección personalizada para almacenar un tipo externo de nombre FacturaLinea, perteneciente al namespace Eslomas.Ejemplos.
using Eslomas.Ejemplos;
public class FacturaLineaCollection : CollectionBase {
Para acceder a los elementos mediante []
public FacturaLinea this[int index]{get{return((FacturaLinea)List[index]);}set{List[index]=value;}}
public int Add(FacturaLinea value){
return( List.Add( value ) );
}
public int IndexOf(FacturaLinea value){
return( List.IndexOf( value ) );
}
public void Insert(int index, FacturaLinea value){
List.Insert( index, value );
}
public void Remove(FacturaLinea value){
List.Remove( value );
}
public bool Contains(FacturaLinea value){
return( List.Contains( value ) );
}
Utilizamos List para acceder a la colección interna, por lo que es necesario
que sobrecarguemos los siguientes métodos que se encargan de comprobar
los datos que llegan
protected override void OnInsert(int index, Object value){
if (value.GetType() != Type.GetType("Eslomas.Ejemplos.FacturaLinea"))
throw new ArgumentException("value must be of type FacturaLinea.", "value");
}
protected override void OnRemove( int index, Object value ) {
if ( value.GetType() != Type.GetType("Eslomas.Ejemplos.FacturaLinea") )
throw new ArgumentException( "value must be of type FacturaLinea.", "value" );
}
protected override void OnSet( int index, Object oldValue, Object newValue ) {
if ( newValue.GetType() != Type.GetType("EsLoMas.Ejemplos.FacturaLinea") )
throw new ArgumentException( "newValue must be of type FacturaLinea.", "newValue" );
}
protected override void OnValidate( Object value ) {
if ( value.GetType() != Type.GetType("Eslomas.Ejemplos.FacturaLinea") )
throw new ArgumentException( "value must be of type FacturaLinea." );
}
}
Valora este capítulo:
Autor y licencia de 'Crear una colección de elementos personalizada con C# - Crear una colección de elementos personalizada con C#'
|
Opiniona sobre 'Crear una colección de elementos personalizada con C# - Crear una colección de elementos personalizada con C#' (0)
Tu nombre debe tener tres caracteres como mínimo.
Es necesario que te des de alta con una cuenta de correo válida.
Es necesario que te des de alta con una cuenta de correo válida.
El contenido del título de tu opinión debe tener tres caracteres como mínimo.
Es obligatorio que selecciones una valoración del recurso.
El contenido del comentario de tu opinión debe tener tres caracteres como mínimo.
Opina sobre este tutorial |
Wikis relacionados con 'Crear una colección de elementos personalizada con C# - Crear una colección de elementos personalizada con C#'
Todo aquel que aspira marcar una diferencia positiva en el ámbito de los negocios, la...
Más »
La organización funcional y burocratizada ha utilizado el conocimiento para codificarlo en procedimientos y rutinas,...
Más »
El precio es el único elemento de combinacion mercantil que genera ganancias, los otros elementos...
Más »
UML (Unified Modeling Language) es un lenguaje que permite modelar, construir y documentar los elementos...
Más »
Esta tecnologia permite posicionamiento dinamico de elementos, y es la extension natural de la idea...
Más »


