Сократите это в функцию - PullRequest
       42

Сократите это в функцию

0 голосов
/ 13 марта 2012

Эта программа организует данные 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...

1 Ответ

0 голосов
/ 13 марта 2012

Вы пробовали LINQ?

Processors = DataRetriever.GetWMIData("Win32_Processor").Select(x => new Processor(x)).ToList();
...