Salut,

J'ai créé un petit controle pour selectionner un Pays dans une liste déroulante. Le truc basic à ceci près qu'étant donné que je suis dans un SOA alimenté par un back End WS*, le datasource de ma liste déroulante est une List<T>.

J'aimerais que mon control ait 3 surcharges pour la propriété selectedCountry.

public String selectedCountry
public Guid selectedCountry
public CL_Pays selectedCountry

Toutes les entrée de ma base sont identifiés par des Guid.

J'ai un peu du mal à comprendre le principe des predicate sur des objets complexes.

Microsoft semble ne donner que des exemples avec des trucs genre chaine en dur.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
    private static bool EndsWithSaurus(String s)
    {
        if ((s.Length > 5) && 
            (s.Substring(s.Length - 6).ToLower() == "saurus"))
        {
            return true;
        }
        else
        {
            return false;
        }
    }
mais personnellement j'aimerais faire un truc du style :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
        public CL_Pays SelectedCountry
        {
            get
            {
                List<CL_Pays> colPays = (List<CL_Pays>)ddl.DataSource;
                return colPays[ddl.SelectedIndex];
            }
            set
            {
                List<CL_Pays> colPays = (List<CL_Pays>)ddl.DataSource;
                int intFoundIndex = colPays.FindIndex(booFoundCountry("??QueDois-jeMettreIci pour que ca fonctionne ??",value));
                if (intFoundIndex == -1)
                {
                    throw (new Exception(CountryNotFoundMessage));
                }
                else {
                    ddl.SelectedIndex = intFoundIndex;
                }
            }
        }
Voici le Predicate que j'ai imaginé

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
        private static bool booFoundCountry(CL_Pays oPays, CL_Pays oPaysToFind)
        {
            return (oPays.uniPays == oPaysToFind.uniPays);
        }
Une idée ?

D'avance merci

Laurent