Vendredi 30 décembre 2005
5
30
/12
/2005
22:38
Parfois il est nécessaire d'écrire une collection fortement typée;
A la place de prendre un objet arraylist ( dans lequel on peut mettre n'importe quoi et don risquer de se tromper et ou en plus il va faloir caster a chaque fois dans l'objet souhaité), on va écrire notre propre collection d'objets, n'acceptant que ce type d'objet !.
Voici un exemple de collection n'acceptant que des objets "string"
Il faut utiliser l'espace de noms "System.Collections"
On écrit une classe qui va dériver de "System.Collections.CollectionBase" :
Pour l'utiliser :
StringList Sl = new StringList(); // instanciation
Sl.Add("UN STRING"); // ajout d'un élément à la colection
string st = Sl[0]; // st va prendre la valeur du premier objet de
//la collection
pour un autre objet, remplacer string par cet autre objet.
si l'objet en question a des proprietes, on peut faire une méthode
Add, qui prendra ces proprietes en parametre, et qui creera l'objet
avant de l'ajouter.
A la place de prendre un objet arraylist ( dans lequel on peut mettre n'importe quoi et don risquer de se tromper et ou en plus il va faloir caster a chaque fois dans l'objet souhaité), on va écrire notre propre collection d'objets, n'acceptant que ce type d'objet !.
Voici un exemple de collection n'acceptant que des objets "string"
Il faut utiliser l'espace de noms "System.Collections"
On écrit une classe qui va dériver de "System.Collections.CollectionBase" :
public class StringList : System.Collections.CollectionBase
{
#region constructors
public StringList():base()
{
}
#endregion
#region properties and indexors
// cet indexeur ne prendra que des objets string
public string this[int index]
{
get
{
// il faut convertir ce qu'on a dans notre liste en string
return Convert.ToString(this.List[index]);
}
set
{
this.List[index]=value;
}
}
#endregion
#region public methods
/// <summary>
/// ajoute un objet string a la liste
/// </summary>
/// <param name="text"></param>
public void Add(string text)
{
this.List.Add(text);
}
/// <summary>
/// insere un objet string a la liste
/// </summary>
/// <param name="index">endroit de la liste ou il sera inséré</param>
/// <param name="text">objet string à insérer</param>
public void Insert(int index, string text)
{
this.List.Insert(index,text);
}
/// <summary>
/// Supprime l'élément à l'index
/// </summary>
/// <param name="index">index de l'élément à supprimer</param>
public void RemoveAtIndex(int index)
{
this.List.RemoveAt(index);
}
public void Remove(string text)
{
this.List.Remove(text);
}
#endregion
}
{
#region constructors
public StringList():base()
{
}
#endregion
#region properties and indexors
// cet indexeur ne prendra que des objets string
public string this[int index]
{
get
{
// il faut convertir ce qu'on a dans notre liste en string
return Convert.ToString(this.List[index]);
}
set
{
this.List[index]=value;
}
}
#endregion
#region public methods
/// <summary>
/// ajoute un objet string a la liste
/// </summary>
/// <param name="text"></param>
public void Add(string text)
{
this.List.Add(text);
}
/// <summary>
/// insere un objet string a la liste
/// </summary>
/// <param name="index">endroit de la liste ou il sera inséré</param>
/// <param name="text">objet string à insérer</param>
public void Insert(int index, string text)
{
this.List.Insert(index,text);
}
/// <summary>
/// Supprime l'élément à l'index
/// </summary>
/// <param name="index">index de l'élément à supprimer</param>
public void RemoveAtIndex(int index)
{
this.List.RemoveAt(index);
}
public void Remove(string text)
{
this.List.Remove(text);
}
#endregion
}
Pour l'utiliser :
StringList Sl = new StringList(); // instanciation
Sl.Add("UN STRING"); // ajout d'un élément à la colection
string st = Sl[0]; // st va prendre la valeur du premier objet de
//la collection
pour un autre objet, remplacer string par cet autre objet.
si l'objet en question a des proprietes, on peut faire une méthode
Add, qui prendra ces proprietes en parametre, et qui creera l'objet
avant de l'ajouter.



