fbpx
Wikipedia

Metadatos .NET

Los metadatos .NET, en la plataforma Microsoft .NET, se refieren 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 métodos de clase de otros ensamblados que son invocados por el ensamblado actual. Los metadatos de un método contienen su descripción completa, incluyendo la clase, el ensamblado que contiene la clase, el tipo de retorno y todos los parámetros.

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.

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 modelo 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 personalizados 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 CustomAttribute () { }  public CustomAttribute (int num) { ParamNumber = num; }  public String comment  {  set { Comment = value; }  get { return Comment; }  } } 

El nombre de la clase se mapea al nombre del atributo. El compilador de 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.

Almacenamiento de metadatos

Los ensamblados contienen tablas de metadatos, que están descritas por la especificación CIL. Cada tabla contiene varias entradas (o ninguna) cuyas posiciones determinan sus índices. Cuando el código CIL utiliza metadatos lo hace mediante un token de 32 bits, cuyos 8 primeros bits identifican la tabla y los 24 restantes contienen el índice del metadato.

El Kit de desarrollo de software de .NET contiene un método de ejemplo llamado metainfo que lista las tablas de metadatos de un ensamblado. Sin embargo, esta información no suele tener aplicación práctica para los desarrolladores. Los metadatos también se pueden consultar usando la herramienta ILDASM.

Reflexión

Los metadatos .NET son leídos mediante reflexión. A diferencia del método metainfo, la API de reflexión proporciona una visión más lógica que literal de los metadatos. La reflexión incluida en la versión 1.1 de .NET puede utilizarse para inspeccionar las descripciones de las clases y de sus miembros, y para invocar métodos. Sin embargo, no permite acceso a métodos al CIL en tiempo de ejecución. A partir de la versión 2.0 de la plataforma .NET sí lo permite.

Otras herramientas de metadatos

Al margen del espacio de nombres System.Reflection, existen otras herramientas disponibles para manejar metadatos. La plataforma .NET incorpora una biblioteca de manipulación de metadatos CLR, implementada en código nativo. También existen herramientas de terceros como PostSharp o Mono Cecil.

Enlaces externos

  • .
  • Mono Cecil.
  •   Datos: Q4291515

metadatos, metadatos, plataforma, microsoft, refieren, ciertas, estructuras, datos, embebidas, código, describen, estructura, alto, nivel, código, metadatos, describen, todas, clases, miembros, clase, definen, ensamblado, así, como, clases, métodos, clase, otr. Los metadatos NET en la plataforma Microsoft NET se refieren a ciertas estructuras de datos embebidas en el codigo CIL que describen la estructura de alto nivel del codigo Los metadatos describen todas las clases y los miembros de clase que se definen en el ensamblado asi como las clases y metodos de clase de otros ensamblados que son invocados por el ensamblado actual Los metadatos de un metodo contienen su descripcion completa incluyendo la clase el ensamblado que contiene la clase el tipo de retorno y todos los parametros Un compilador de un lenguaje Net generara los metadatos y los almacenara en el ensamblado que contiene el CIL Cuando el CLR ejecute el CIL comprobara que los metadatos del metodo llamado coinciden con los metadatos almacenados en el metodo llamante Esto asegura que solo se pueda invocar el metodo con el numero y tipo de parametros correctos Indice 1 Atributos 2 Almacenamiento de metadatos 3 Reflexion 4 Otras herramientas de metadatos 5 Enlaces externosAtributos EditarLos desarrolladores pueden anadir metadatos a su codigo a traves 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 codigo son mensajes que indican al compilador que genere metadatos En el CIL los metadatos tales como modificadores de herencia los modificadores de alcance y practicamente cualquier cosa que no sea un codigo de operacion o un flujo de datos son denominados tambien atributos Un atributo personalizado es una clase regular que hereda de una clase Atributte Un atributo personalizado puede utilizarse sobre cualquier metodo propiedad clase o incluso sobre el ensamblado completo empleando la siguiente sintaxis i Nombre del atributo i i parametro i opcional pares i nombre valor i 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 metodos en forma de servicios web LINQ to SQL los emplea para definir el mapeo de clases al modelo relacional subyacente Visual Studio los utiliza para agrupar propiedades de objetos los desarrolladores de clases indican la categoria de la clase del objeto aplicando el atributo personalizado Category Los atributos personalizados son interpretados por el codigo de aplicacion 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 codigo necesario para poder leer los metadatos y actuar sobre ellos A modo de ejemplo el atributo que se muestra a continuacion podria ser manejado por el codigo class CustomAttribute Attribute int ParamNumber 0 string Comment public CustomAttribute public CustomAttribute int num ParamNumber num public String comment set Comment value get return Comment El nombre de la clase se mapea al nombre del atributo El compilador de C anade automaticamente 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 utilizacion de esta cadena es opcional cuando se emplee el atributo La utilizacion 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 intrinsecamente estos atributos y maneja el codigo marcado con estos atributos de una forma diferente Atributos tales como Serializable y Obsolete estan implementados como atributos pseudo personalizados Almacenamiento de metadatos EditarLos ensamblados contienen tablas de metadatos que estan descritas por la especificacion CIL Cada tabla contiene varias entradas o ninguna cuyas posiciones determinan sus indices Cuando el codigo CIL utiliza metadatos lo hace mediante un token de 32 bits cuyos 8 primeros bits identifican la tabla y los 24 restantes contienen el indice del metadato El Kit de desarrollo de software de NET contiene un metodo de ejemplo llamado metainfo que lista las tablas de metadatos de un ensamblado Sin embargo esta informacion no suele tener aplicacion practica para los desarrolladores Los metadatos tambien se pueden consultar usando la herramienta ILDASM Reflexion EditarLos metadatos NET son leidos mediante reflexion A diferencia del metodo metainfo la API de reflexion proporciona una vision mas logica que literal de los metadatos La reflexion incluida en la version 1 1 de NET puede utilizarse para inspeccionar las descripciones de las clases y de sus miembros y para invocar metodos Sin embargo no permite acceso a metodos al CIL en tiempo de ejecucion A partir de la version 2 0 de la plataforma NET si lo permite Otras herramientas de metadatos EditarAl margen del espacio de nombres System Reflection existen otras herramientas disponibles para manejar metadatos La plataforma NET incorpora una biblioteca de manipulacion de metadatos CLR implementada en codigo nativo Tambien existen herramientas de terceros como PostSharp o Mono Cecil Enlaces externos EditarPostSharp Mono Cecil Datos Q4291515 Obtenido de https es wikipedia org w index php title Metadatos NET amp oldid 125249147, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos