LDAP & List<IDictionaryEnumerator> - Comment Simplifier ce code ?
Hello !
Bon, vu mon code, j'ai l'impression de ne pas utiliser les bonnes classes ou les bons objets.
Voici ce que je dois réaliser :
Recherche LDAP -> Retourne les propriétés. -> Possibilité d'aller les consulter Key/Value une par une, comme je le souhaite.
Voici mon code :
Code:
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
|
// Classe LDAP
// Méthode de listage :
// (...)
IDictionaryEnumerator dir = null;
List<IDictionaryEnumerator> listDir = new List<IDictionaryEnumerator>();
DirectoryEntry entry = result.GetDirectoryEntry();
dir = entry.Properties.GetEnumerator();
listDir.Add(dir);
// (...)
return listDir;
///////////////////////////////////
// Classe Form1.cs
// (...)
private void ListerPCs()
{
try
{
ListViewItem item = null;
List<IDictionaryEnumerator> listDir = new List<IDictionaryEnumerator>();
listDir = engine.ldap.listAllComputer(); // ---> ici je récupère ma liste depuis ma classe LDAP ci dessus...
foreach (IDictionaryEnumerator dir in listDir)
{
String cn = null;
String os = null;
String osVer = null;
String osSP = null;
String Desc = null;
while (dir.MoveNext())
{
if (dir.Key.ToString().ToLower().Equals("cn"))
{
IDictionaryEnumerator val = (IDictionaryEnumerator)dir.Value;
while (val.MoveNext())
{
if(val.Key.ToString().ToLower().Equals("value"))
cn = dir.Value.ToString();
}
}
}
item = new ListViewItem(new String[] { cn, os, osVer, osSP, Desc });
lviewInfo.Items.Add(item);
}
} |
Le code en GRAS me parait un peu long pour l'utilisation que j'en fais.
Je sais exactement quels champs je dois récupérer :
Les clés suivantes :
cn
operatingSystem
operatingSystemVersion
operatingSystemServicePack
Description
Existe-t-il un moyen de simplifier mes lignes de code ? Peut-être en utilisant autre chose qu'un IDictionnaryEnumerator par exemple, je ne sais pas ...
Pouvez-vous me guider ?
MErci.