Liste ou tableau de ManagementObject
Bonjour, j'ai un petit problème.
J'ai besoin de chercher le nom d'un ManagementObject dans deux classes : Win32_PnPEntity et Win32_USBHub. Il peut potentiellement être dans l'une ou dans l'autre.
Pour le moment je procède de la manière qui suit :
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
|
string name = "";
ManagementObjectSearcher searcher2 = new ManagementObjectSearcher("SELECT * FROM Win32_PnPEntity");
foreach (ManagementObject mo2 in searcher2.Get())
{
try
{
name = mo2["Name"].ToString();
if (name.Contains("USB Serial Port"))
{
//strReaderType = "Bixi";
return "Bixi";
}
else if (name.Contains("Kaba B-Net 91 07"))
{
//strReaderType = "Kaba";
return "Kaba";
}
}
catch(Exception ex)
{
LogWriter.WriteLog(ListMessages[5].Msg_Text1 + " " + System.Reflection.MethodBase.GetCurrentMethod().Name + " " + ex.Message);
}
}
ManagementObjectSearcher searcher3 = new ManagementObjectSearcher("SELECT * FROM Win32_USBHub");
foreach (ManagementObject mo2 in searcher3.Get())
{
try
{
name = mo2["Name"].ToString();
if (name.Contains("USB Serial Port"))
{
//strReaderType = "Bixi";
return "Bixi";
}
else if (name.Contains("Kaba B-Net 91 07"))
{
//strReaderType = "Kaba";
return "Kaba";
}
}
catch (Exception ex)
{
LogWriter.WriteLog(ListMessages[5].Msg_Text1 + " " + System.Reflection.MethodBase.GetCurrentMethod().Name + " " + ex.Message);
}
}
return "Erreur"; |
Seulement c'est pas très propre, je répète pas mal de code bêtement, 2 fois.
J'ai donc pensé à deux solutions :
1 : Modifier la requête SELCT * FROM Win32_PnPEntity en la faisant aller chercher dans les deux classes directement (malheureusement impossible je crois)
2 : Créer un tableau ou une liste de ManagementObject, unifier les deux en une seule et aller la parcourir.
Je peux coder comme ceci :
Code:
1 2 3 4 5
|
ManagementObjectSearcher mos1 = new ManagementObjectSearcher("SELECT * FROM Win32_PnPEntity");
ManagementObjectSearcher mos2 = new ManagementObjectSearcher("SELECT * FROM Win32_USBHub");
ManagementObjectCollection moc = mos1.Get();
moc = mos2.Get(); |
Cependant les objets de la mos1.Get() ne seront pas sauvegardés, ils seront écrasés par la mos2.Get()
avez-vous une solution à me proposer ?
Thx.