このプログラムは、WMIデータをクラスのセット(コンピュータ内の各ハードウェア要素の1つのクラス)に編成し、特定のハードウェア要素が複数存在する場合、各クラスを複数回初期化します。これを関数に短縮
このコードセクションをいくつかの関数呼び出しに変えることができますか?私は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...
これは、codereview.stackexchange.comにもっと適しているかもしれません。 – ramblinjan
これはわかりませんでした。誰かが最初に答えを出すかどうかがわかります。 – CJxD