none
Macht man das so? Struct in einem Array von einem Singleton setzen und abfragen RRS feed

  • Frage

  • Schönen guten Abend,

    ich bin relativ neu mit C# unterwegs. Ich habe jahrelang Delphi (Pascal) programmiert und seit 2 Jahren Java.

    Ich habe eine Klasse, die die Struktur meiner Daten hält.

    namespace KECComputerMonitoring
    {
        public struct SMemory
        {
            public string name;
            public string capacity;
            public string speed;
        }
    
        public sealed class AssetData
        {
    
            private SMemory[] memory;
    
            /* ############################################################## 
            */
            // Encapsulated instance - the single instance - thread-safe
            private static readonly AssetData instance = new AssetData();
    
            // Explicit static constructor to tell C# compiler not to mark type as beforefieldinit
            static AssetData() { }
    
            // Hide constructor
            private AssetData() { }
    
            // Return the single instance of this class.
            public static AssetData GetInstance { get { return instance; } }
            /* 
            ############################################################## */
    
            public SMemory[] Memory
            {
                get { return memory; }
                set { memory = value; }
            }
    }

    Mit der Main Klasse hole ich mir jetzt die Instanz der Daten und ermittle mit WMI den Arbeitsspeicher.

    namespace KECComputerMonitoring { class Program { static void Main(string[] args) { AssetData assetData = AssetData.GetInstance; int idx; // Local WMI Request string computername = "localhost"; ManagementScope scope = new ManagementScope("\\\\" + computername + "\\root\\cimv2"); scope.Connect(); ObjectQuery query = new ObjectQuery("Select * from Win32_PhysicalMemory"); ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query); assetData.Memory = new SMemory[searcher.Get().Count]; idx = 0; foreach (ManagementObject obj in searcher.Get()) { assetData.Memory[idx].name = obj["DeviceLocator"].ToString(); assetData.Memory[idx].capacity = obj["Capacity"].ToString(); assetData.Memory[idx].speed = obj["Speed"].ToString(); idx++; } foreach (var obj in assetData.Memory) { Console.WriteLine(obj.name); Console.WriteLine(obj.capacity); Console.WriteLine(obj.speed); Console.WriteLine(""); } Console.ReadLine(); }

    } }

    Mein Lösungsweg funktioniert. Nur würde ich gerne wissen, ob das der richtige Weg ist. Die Singleton Klasse ist ok. Aber die Daten abspeichern stelle ich in Frage.

    Vielen Dank im Voraus für alle Anregungen oder Verbesserungsvorschläge.

    Mfg

    Sven



    • Bearbeitet Sven O Mittwoch, 27. Januar 2016 20:19
    Mittwoch, 27. Januar 2016 20:01

Antworten

Alle Antworten