Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
ICOMPARER GÉNÉRIQUE ET RÉFLEXION
Information sur la source
Description
Cette source pourrais très bien être implémenter un Winform. Petit exemple illustrant la comparaison de n'importe quel objet par rapport à un nom d'une de ses méthodes/propriété/retour de méthode. La classe IComparer est utilisée, ainsi on peut l'utiliser pour tout objet qui utilise la méthode Sort(IComparer), les liste par exemple. L'implémentation est assez simple c'est se qui fait la force de ce comparateur.
Source
- //On cree notre petite liste
- ListeEntreprise = new List<FirmUser>();
- ListeEntreprise.Add(new FirmUser("Bouygues Télécom"));
- ListeEntreprise.Add(new FirmUser("France Télécom"));
- ListeEntreprise.Add(new FirmUser("SFR"));
- ListeClient = new List<ClientUser>();
- ListeClient.Add(new ClientUser("Martin", "Jean", 20, "20 rue du louvre",ListeEntreprise[1]));
- ListeClient.Add(new ClientUser("Zert", "Romain", 25, "20 allé du louvre",ListeEntreprise[2]));
- ListeClient.Add(new ClientUser("Armand", "Bob", 50, "Place du louvre",ListeEntreprise[0]));
- ListeClient.Add(new ClientUser("Martin", "Julie", 18, "258 rue du louvre",ListeEntreprise[1]));
- ListeClient.Add(new ClientUser("Hounou", "koffi", 34, "20 rue du louvre",ListeEntreprise[0]));
-
- //On cree le filtre
- private List<ObjectComparerFilter> _Filter;
- public List<ObjectComparerFilter> Filter
- {
- get
- {
- if (_Filter == null)
- {
- _Filter = new List<ObjectComparerFilter>();
- if (string.IsNullOrEmpty(HiddenFilter.Value))
- {
- HiddenFilter.Value = "nom,0;prenom,0;age,0;adresse,0;entreprise,0";
- }
- string[] filterTmp = HiddenFilter.Value.Split(';');
- foreach (string str in filterTmp)
- {
- string[] strTmp = str.Split(',');
- _Filter.Add(new ObjectComparerFilter(strTmp[0], ((ObjectComparerFilter.Order)(int.Parse(strTmp[1])))));
- }
- }
- return _Filter;
- }
- set
- {
- _Filter = value;
- HiddenFilter.Value = "";
- for (int i = 0; i < value.Count; i++)
- {
- HiddenFilter.Value += value[i].nom + "," + ((int)value[i].order).ToString();
- if (i < value.Count - 1)
- {
- HiddenFilter.Value += ";";
- }
- }
- }
- }
-
- //Et on trie
- //le filtre par défaut: "nom,0;prenom,0;age,0;adresse,0;entreprise,0";
- //nom== nom de la proriété, 0 = pas de trie (-1 et 1 sinon)
- ObjectComparer<ClientUser> _ObjectComparer = new ObjectComparer<ClientUser>(Filter);
- ListeClient.Sort(_ObjectComparer);
-
-
-
-
//On cree notre petite liste
ListeEntreprise = new List<FirmUser>();
ListeEntreprise.Add(new FirmUser("Bouygues Télécom"));
ListeEntreprise.Add(new FirmUser("France Télécom"));
ListeEntreprise.Add(new FirmUser("SFR"));
ListeClient = new List<ClientUser>();
ListeClient.Add(new ClientUser("Martin", "Jean", 20, "20 rue du louvre",ListeEntreprise[1]));
ListeClient.Add(new ClientUser("Zert", "Romain", 25, "20 allé du louvre",ListeEntreprise[2]));
ListeClient.Add(new ClientUser("Armand", "Bob", 50, "Place du louvre",ListeEntreprise[0]));
ListeClient.Add(new ClientUser("Martin", "Julie", 18, "258 rue du louvre",ListeEntreprise[1]));
ListeClient.Add(new ClientUser("Hounou", "koffi", 34, "20 rue du louvre",ListeEntreprise[0]));
//On cree le filtre
private List<ObjectComparerFilter> _Filter;
public List<ObjectComparerFilter> Filter
{
get
{
if (_Filter == null)
{
_Filter = new List<ObjectComparerFilter>();
if (string.IsNullOrEmpty(HiddenFilter.Value))
{
HiddenFilter.Value = "nom,0;prenom,0;age,0;adresse,0;entreprise,0";
}
string[] filterTmp = HiddenFilter.Value.Split(';');
foreach (string str in filterTmp)
{
string[] strTmp = str.Split(',');
_Filter.Add(new ObjectComparerFilter(strTmp[0], ((ObjectComparerFilter.Order)(int.Parse(strTmp[1])))));
}
}
return _Filter;
}
set
{
_Filter = value;
HiddenFilter.Value = "";
for (int i = 0; i < value.Count; i++)
{
HiddenFilter.Value += value[i].nom + "," + ((int)value[i].order).ToString();
if (i < value.Count - 1)
{
HiddenFilter.Value += ";";
}
}
}
}
//Et on trie
//le filtre par défaut: "nom,0;prenom,0;age,0;adresse,0;entreprise,0";
//nom== nom de la proriété, 0 = pas de trie (-1 et 1 sinon)
ObjectComparer<ClientUser> _ObjectComparer = new ObjectComparer<ClientUser>(Filter);
ListeClient.Sort(_ObjectComparer);
Conclusion
Sources de la même categorie
Commentaires
|
CalendriCode
| | | L | M | M | J | V | S | D |
| | | | 1 | 2 | 3 | 4 |
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | 31 | |
|
|