Partager via


Utilisation d'objets fortement typés

La prise en charge des objets fortement typés facilite l'utilisation de l'instrumentation de gestion par les développeurs d'application. Pour répondre aux besoins d'extensibilité des clients, les objets WMI sont généralement à liaison tardive, ce qui n'impose pas de typage fort. Dans l'environnement .NET Framework, WMI fournit la possibilité de générer automatiquement des wrappers à liaison anticipée pour les objets WMI. Ceci permet aux applications d'utiliser ces wrappers dans le code et, ainsi, de tirer parti de toutes les fonctionnalités d'assistance disponibles dans Microsoft Visual Studio pour les objets fortement typés (comme la fonctionnalité Intellisense et l'exploration d'objets). Vous pouvez générer un wrapper fortement typé de plusieurs manières :

  • Exécutez l'utilitaire MgmtClassGen.exe fourni dans le kit de développement .NET Framework SDK.

    Pour plus d'informations, consultez Management Strongly Typed Class Generator (mgmtclassgen.exe).

  • Utilisez l'extension Server Explorer Management dans Visual Studio .NET afin de générer automatiquement le wrapper lorsque vous faites glisser une classe de gestion jusqu'à votre concepteur.

  • Générez le wrapper par programme à l'aide des méthodes System.Management.ManagementClass.GetStronglyTypedClassCode().

Du fait qu'ils sont implémentés sous forme de classes de code managé, les wrappers assurent une prise en charge multilangage qui permet de les utiliser avec n'importe quel langage de programmation.

L'exemple suivant est basé sur celui de la rubrique Accès aux informations de gestion avec System.Management, mais il inclut maintenant la classe fortement typée Service. Avant d'exécuter cet exemple, vous devez générer la classe suivante :

C:> managementclassgen Win32_Service /L cs    

(ou utilisez /L vb pour des projets Visual Basic)

Le résultat du générateur est le fichier de code service.cs, que vous devez ajouter à votre projet ainsi que le code ci-dessous.

Notez l'utilisation de la classe fortement typée « Service » dans l'instruction foreach au lieu de la classe générique ManagementObject, ainsi que la notation à points standard simplifiée employée pour accéder aux propriétés des objets retournés :

using System;
using ROOT.CIMV2.Win32;
// Contains the strongly-typed generated class "Service" 
// in ROOT.CIMV2.Win32 namespace
      
class Sample {
   // Enumerate instances of Win32_Service class
   void EnumerateServices() {
      Console.WriteLine("List services and their state");
      foreach(Service ser in Service.GetInstances())
         Console.WriteLine(
      "Service: "+ ser.Name + " is " + ser.State);   
   }
      
   public static void Main(string[] args) {
      Sample test = new Sample();
      test.EnumerateServices();
      return;
   }
}


[Visual Basic]
Imports System
Imports Microsoft.CIMv2.Win32

Public Function EnumerateServices
Console.WriteLine("List services and their state");

'Request the collection of services
Dim searcher As New ManagementObjectSearcher("Win32_Service")

' Enumerate through the collection
Dim serv As Service
For Each serv In searcher.Get()
   Console.WriteLine("Variable : {0}, Value = {1}", _
      serv.Name, serv.VariableValue)
Next serv
End Function 

Voir aussi

Accès aux informations de gestion avec System.Management | Extraction de collections d'objets de gestion | Soumission de requêtes pour obtenir des informations de gestion | Abonnement à des événements de gestion et consommation de ces événements | Exécution de méthodes sur des objets de gestion | Options d'accès distant et de connexion