Эта программа организует данные WMI в набор классов - по одному классу для каждого аппаратного элемента в компьютере - и каждый класс инициализируется несколько раз, если существует более одного конкретного аппаратного элемента.
Есть лихороший аккуратный способ превратить этот раздел кода в несколько вызовов функций?Я думал о чем-то вроде CreateComponent(ref object dataClass, params string[] WMIClasses);
для инициализации компьютерного компонента вместо использования временных хранилищ для данных WMI и создания цикла for для добавления каждого экземпляра.
// These temporary stores fetch WMI data as ManagementObjects
// Most cases will only need one WMI class.
ManagementObject[] WMIDataTemp1;
ManagementObject[] WMIDataTemp2;
// Fetch data as ManagementObjects
WMIDataTemp1 = DataRetriever.GetWMIData("Win32_Processor");
// Loop though each ManagementObject and add a new device for each instance
foreach (ManagementObject Object in WMIDataTemp1)
{
this.Processors.Add(new Processor(Object));
}
WMIDataTemp1 = DataRetriever.GetWMIData("Win32_Baseboard");
WMIDataTemp2 = DataRetriever.GetWMIData("Win32_MotherboardDevice");
for (int i = 0; i < WMIDataTemp1.Length; i++)
{
this.Motherboards.Add(new Motherboard(WMIDataTemp1[i], WMIDataTemp2[i]));
}
// And so on for all the other bits of hardware...