Metadatos .NET

Metadatos .NET

Los metadatos .NET, en el Microsoft .NET framework, hacen referencia a ciertas estructuras de datos embebidas en el código CIL que describen la estructura de alto nivel del código. Los metadatos describen todas las clases y los miembros de clase que se definen en el ensamblado, así como las clases y miembros de clase de otros ensamblados que son invocados por el ensamblado actual. Los metadatos de un método contienen la descripción completa del método, incluyendo la clase (y el ensamblado que contiene la clase), el tipo de retorno y todos los parámetros del método.

Un compilador de un lenguaje .Net generará los metadatos y los almacenará en el ensamblado que contiene el CIL. Cuando el CLR ejecute el CIL comprobará que los metadatos del método llamado coinciden con los metadatos almacenados en el método llamante. Esto asegura que sólo se pueda invocar el método con el número y tipo de parámetros correctos.

Contenido

Atributos

Los desarrolladores pueden añadir metadatos a su código a través de atributos. Existen dos tipos de atributos, personalizados y pseudo personalizados, presentando ambos tipos la misma sintaxis de cara al desarrollador. Los atributos en el código son mensajes que indican al compilador que genere metadatos. En el CIL, los metadatos tales como modificadores de herencia, los modificadores de alcance, y prácticamente cualquier cosa que no sea un código de operación o un flujo de datos, son denominados también atributos.

Un atributo personalizado es una clase regular que hereda de una clase Atributte. Un atributo personalizado puede utilizarse sobre cualquier método, propiedad, clase, o incluso sobre el ensamblado completo, empleando la siguiente sintaxis: [Nombre del atributo(parámetro opcional, pares nombre=valor opcionales)] como en el siguiente ejemplo:

 [Custom]
 [Custom(1)]
 [Custom(1, comment="yes")]

Los atributos personalizados se usan de forma generalizada en el .NET Framework. Windows Communication Framework emplea atributos para definir contratos de servicio, ASP.NET para exponer métodos en forma de servicios web, LINQ to SQL los emplea para definir el mapeo de clases al esquema relacional subyacente, Visual Studio los utiliza para agrupar propiedades de objetos, los desarrolladores de clases indican la categoría de la clase del objeto aplicando el atributo personalizado [Category]. Los atributos perosonalizados son interpretados por el código de aplicación y no por el CLR. Cuando el compilador observa un atributo personalizado, genera unos metadatos personalizados que no puede reconocer el CLR. El desarrollador tiene que proporcionar el código necesario para poder leer los metadatos y actuar sobre ellos. A modo de ejemplo, el atributo que se muestra a continuación podría ser manejado por el código:

class CustomAttribute : Attribute
{
   int ParamNumber = 0;
   string Comment = "";
 
   public RecentAttribute() { }
   public RecentAttribute(int num) { paramNumber = num; }
 
   public String comment
   {
      set { Comment = value; }
   }
}

El nombre de la clase se mapea al nombre del atributo. El compilador de Visual C# añade automáticamente la cadena "attribute" al final del nombre del atributo. Por lo tanto, toda clase que implemente el manejo de un atributo debe finalizar con esta cadena, pero la utilización de esta cadena es opcional cuando se emplee el atributo. La utilización del atributo invoca el constructor de la clase. Se permiten constructores sobrecargados. Los pares Nombre-Valor se mapean a propiedades, siendo el nombre el de la propiedad y el valor proporcionado el establecido por la propiedad.

Un atributo pseudo-personalizado se emplea de la misma forma que un atributo personalizado convencional, pero no posee un manejador personalizado; en su lugar, el compilador percibe intrínsecamente estos atributos y maneja el código marcado con estos atributos de una forma diferente. Atributos tales como Serializable y Obsolete están implementados como atributos pseudo-personalizados.

Metadata storage

Assemblies contain tables of metadata. These tables are described by the CIL specification. The metadata tables will have zero or more entries and the position of an entry determines its index. When CIL code uses metadata it does so through a metadata token. This is a 32-bit value where the top 8 bits identify the appropriate metadata table, and the remaining 24 bits give the index of the metadata in the table. The Framework SDK contains a sample called metainfo that will list the metadata tables in an assembly, however, this information is rarely of use to a developer. Metadata in an assembly may be viewed using the ILDASM tool provided by the .NET Framework SDK.

Reflection

Artículo principal: Reflection (computer science)

Reflection is the API used to read .NET metadata. The reflection API provides a logical view of metadata rather than the literal view provided by tools like metainfo. Reflection in version 1.1 of the .NET framework can be used to inspect the descriptions of classes and their members, and invoke methods. However, it does not allow runtime access to the CIL for a method. Version 2.0 of the framework allows the CIL for a method to be obtained.

Other Metadata Tools

Besides the System.Reflection namespace, other tools are also available that can be used to handle metadata. The Microsoft .NET Framework ships a CLR metadata manipulation library that is implemented in native code. Third party tools to retrieve and manipulate metadata include PostSharp and Mono Cecil can also be used.


Wikimedia foundation. 2010.

Игры ⚽ Нужен реферат?

Mira otros diccionarios:

  • Common Intermediate Language — (CIL, pronunciado sil o kil ) (anteriormente llamado Microsoft Intermediate Language o MSIL) es el lenguaje de programación legible por humanos de más bajo nivel en el Common Language Infrastructure y en el .NET Framework. Los lenguajes del .NET… …   Wikipedia Español

  • OpenDocument — Texto OpenDocument Desarrollador Sun Microsystems, OASIS …   Wikipedia Español

  • Gestión de derechos digitales — El estilo de esta traducción aún no ha sido revisado por terceros. Si eres hispanohablante nativo y no has participado en esta traducción puedes colaborar revisando y adaptando el estilo de ésta u otras traducciones ya acabadas. Gestión de… …   Wikipedia Español

  • Component Object Model — (COM) es una plataforma de Microsoft para componentes de software introducida por dicha empresa en 1993. Esta plataforma es utilizada para permitir la comunicación entre procesos y la creación dinámica de objetos, en cualquier lenguaje de… …   Wikipedia Español

  • Free Lossless Audio Codec — En este artículo sobre informática se detectaron los siguientes problemas: Necesita mejorar su estructura. Carece de fuentes o referencias que aparezcan en una fuente acreditada. Requiere una revisión ortográfica y gramatical …   Wikipedia Español

  • Infraestructura de Lenguaje Común — Saltar a navegación, búsqueda La infraestructura de lenguaje común (Common Language Infrastructure, CLI) es una especificación estandarizada que describe un entorno virtual para la ejecución de aplicaciones, cuya principal característica es la de …   Wikipedia Español

  • Sybase — Inc. 464 Tipo Pública NYSE: SY (en inglés) Fundación 1984 Sede Dublin …   Wikipedia Español

  • Infraestructura de lenguaje común — Representación visual, en inglés, de la infraestructura de lenguaje común. La infraestructura de lenguaje común (en inglés Common Language Infrastructure o CLI) es una especificación estandarizada que describe un entorno virtual para la ejecución …   Wikipedia Español

  • Last.fm — es una red social, una radio vía Internet y además un sistema de recomendación de música que construye perfiles y estadísticas sobre gustos musicales, basándose en los datos enviados por los usuarios registrados. Algunos de estos servicios son de …   Wikipedia Español

  • Lenguaje de programación Java — Saltar a navegación, búsqueda Java Paradigma: Orientado a objetos Apareció en: 1991 Diseñado por: Sun Microsystems Tipo de dato: Fuerte, Estático Implementacion …   Wikipedia Español

Compartir el artículo y extractos

Link directo
Do a right-click on the link above
and select “Copy Link”