Código generado desde MgmtClassGen.exe

La herramienta Mgmtclassgen.exe genera código para una clase WMI determinada. La herramienta utiliza WMI en clases .NET Framework que se encuentran en el espacio de nombres System.Management con el fin de generar código para la clase. La clase generada desde Mgmtclassgen.exe permite al usuario obtener acceso a todos los métodos y propiedades de la clase WMI a través de una clase de enlace en tiempo de compilación, en contraste con las clases de enlace en tiempo de ejecución del espacio de nombres System.Management. Un objeto se enlaza en tiempo de compilación cuando se asigna a una variable que se declara de un tipo de objeto específico. Los objetos enlazados en tiempo de compilación permiten al compilador asignar memoria y realizar otras optimizaciones antes de que se ejecute la aplicación. Por el contrario, un objeto se enlaza en tiempo de ejecución cuando se asigna a una variable que se declara como variable de tipo Object.

Código generado

El código generado desde Mgmtclassgen.exe tiene las siguientes especificaciones:

  • Todas las propiedades de la clase generada tienen una propiedad equivalente en la clase WMI.
    • Las propiedades de sólo lectura de la clase WMI, que se identifican por la ausencia de un calificador Write o por el establecimiento de un calificador Write como null, se representan en el código generado mediante propiedades que sólo utilizan el descriptor de acceso de propiedad get.
    • Las propiedades estáticas de la clase WMI, identificadas por un calificador estático en la propiedad, se representan en el código generado como propiedades estáticas.
    • Para las propiedades de la clase WMI con calificadores ValueType y Value numéricos, las clases de enumeración se crean en el código generado. Las propiedades se asignan a un tipo Enum generado.
    • Para las propiedades de la clase WMI con calificadores Bitmap y BitValue numéricos, las clases de enumeración se crean en el código generado. Las propiedades se asignan al tipo Enum recién generado.
    • Todas las propiedades se marcan con atributos Visual Studio para que Visual Studio Intellisense pueda descubrirlas.
    • Todas las propiedades ValueType en el código generado tienen un atributo TypeConverter establecido como WMIValueTypeConverter. Esto permite la serialización de estas propiedades en cadenas.
  • Todos los métodos de la clase generada tienen un método equivalente en la clase WMI.
    • Todas las propiedades se marcan el atributo Visual Studio para que Visual Studio Intellisense pueda descubrirlos.
    • Los métodos estáticos de la clase WMI, identificados por un calificador estático, se crean como métodos estáticos en el código generado.
  • Se crean varios constructores en el código generado para inicializar una instancia de la clase generada.
    • Un constructor que toma los valores de las propiedades de clase WMI clave (que identifica el calificador clave) como argumentos de entrada. Este constructor se puede utilizar para inicializar una instancia mediante los valores clave de la instancia de la clase.
    • Una clase WMI Singleton tendrá el constructor predeterminado para inicializar la instancia en la instancia singleton de la clase.
  • Una clase ManagementSystemProperties interna. Esta clase tiene todas las propiedades de sistema WMI estándar.
  • Se generan un enumerador interno y una clase de colección para controlar las enumeraciones de la instancia de la clase WMI. Las clases generadas son <GeneratedClassName>Collection y <GeneratedClassName>Enumerator.
  • Variables miembro private
    • Variable ManagementBaseObject para almacenar el objeto WMI subyacente.
    • Variable de cadena inicializada con el espacio de nombres WMI.
    • Variable de cadena inicializada con el nombre de clase WMI.
    • Variable ManagementSystemProperties para almacenar las propiedades del sistema.
    • Variable AutoCommitProp de tipo Boolean para indicar si la propiedad se debe guardar en WMI inmediatamente o cuando se llame al método CommitObject.
    • Variable isEmbedded del tipo Boolean y variable embeddedObj del tipo ManagementBaseObject para controlar objetos incrustados.
  • Propiedades public
    • Propiedad AutoCommit de tipo Boolean para indicar si las propiedades se deben guardar inmediatamente después de establecerse, o bien cuando se llama al método CommitObject.
    • Propiedad CreatedWmiNamespace de tipo String que almacena el espacio de nombres WMI de la clase.
    • Propiedad CreatedClassName de tipo String que almacena el nombre de clase WMI.
    • Propiedad SystemProperties del tipo ManagementSystemProperties que representa las propiedades del sistema de la instancia WMI.
    • Propiedad LateBoundObject de tipo ManagementBaseObject que almacena el objeto WMI subyacente.
    • Propiedad StaticScope de tipo ManagementScope que almacena el ámbito de la clase o instancia WMI actual.
  • Métodos public
    • El método GetInstances enumera una instancia de la clase. Esta función devuelve una colección.
    • El método CommitObject llama al método Put del objeto WMI subyacente para guardar los cambios en WMI. Se utiliza cuando la propiedad AutoCommit se establece como true.
    • DeleteInstance es un método estático con el que se elimina una instancia WMI.
    • Los métodos ToDateTime y ToDmtfDateTime convierten objetos datetime DMTF en DateTime y viceversa.
    • Las funciones ToTimeSpan y ToDmtfTimeInterval convierten intervalos de tiempo DMTF en objetos TimeSpan y viceversa.
  • La clase interna WMIValueTypeConverter, derivada de la clase TypeConverter, se genera para convertir las distintas propiedades ValueType en otros tipos de clases. Este código se agrega específicamente para que se muestren correctamente valores de propiedad como cadenas en la ventana de propiedad de Visual Studio.
  • Métodos ShouldSerialize<PropertyName> e Is<PropertyName>Null para todas las propiedades ValueType generadas. En WMI, una propiedad de tipo de valor como Integer se puede establecer como NULL, lo que no es posible en un entorno de programación. Las funciones ShouldSerialize utilizan funciones Is<PropertyName>Null para controlar valores null cuando se muestran en el examinador de propiedades de Visual Studio. Is<PropertyName>Null se utiliza para comprobar si el valor de la propiedad es NULL.
  • Las funciones Reset<PropertyName> también se agregan para propiedades de lectura y escritura que pueden ser null. Asimismo, estas funciones se agregan para la funcionalidad del Examinador de propiedades. Los usuarios pueden hacer clic con el botón secundario en la propiedad en el Examinador de propiedades de Visual Studio y establecer el valor como NULL mediante esta función.

Consulte también

Tareas

Cómo utilizar objetos con establecimiento inflexible de tipos

Send comments about this topic to Microsoft.

Copyright © 2007 Microsoft Corporation. Reservados todos los derechos.