SlideShare une entreprise Scribd logo
1  sur  5
Télécharger pour lire hors ligne
Atributos
       Un atributo-un término muy sobre usado-en C# es un mecanismo que define palabras como
    declaraciones descriptivas, para anotar a elementos de un programa como lo son tipos, campos,
      métodos, y propiedades. Estos atributos son usados para extender la Metadata de la entidad
  seleccionada. La información que los atributos contienen puede ser devuelta en tiempo de ejecución
 desde la Metadata a través del mecanismo Reflexión. Puedes usar números atributos predefinidos que
     vienen con el FCL (Framework Class Library), o puedes definir tu propio atributo personalizado.

                                                                                   Extraído de Wiki pedía.

Los Atributos son una ponderosa herramienta para asociar el código, ya sea, Tipos, Métodos,
propiedades con información declarativa, que puede ser consultada en tiempo de ejecución a través de
Reflection.

Existen 2 tipos de atributos. Los disponibles en el Base Class Library de .Net Framework (Built-in
Attributes) y los atributos definidos por el usuario (Custom Atributes).

Estos se utilizan para:

       Especificar que privilegios de seguridad que una clase requiere.
       Agregar Metadata a los programas. Los atributos permiten agregar información de forma
        declarativa que puede ser consultada en tiempo de ejecución.
       Declarar habilidades de un objeto. Como si el mismo soporta serialización, etc.
       También se utilizan para describir objetos. Por ejemplo, cuando miramos el código generado
        por LinQ para Convertir una entidad en la base de datos en un objeto en .net que se
        corresponda con el mismo, podemos observar como él describe mediante atributos dichos
        objetos.

[Table(Name = quot;Employeesquot;)]
    public class Employees
    {
        [Column(IsPrimaryKey = true, Name = quot;EmployeeIDquot;, IsDbGenerated =
true)]
        public Int32 EmployeeID { get; set; }


            [Column(Name = quot;FirstNamequot;, DbType = quot;varchar(10)quot;)]
            public string FirstName { get; set; }

            [Column(Name = quot;LastNamequot;, DbType = quot;varchar(20)quot;)]
            public string LastName { get; set; }

        }
Utilizando Atributos

Para utilizar un atributos solo debemos especificar mediante corchetes [ ], y dentro de los mismos
especificar el nombre del atributo que vamos a utilizar.

Si miramos el código anterior, en la declaración de la clase incluimos un atributo que nos especifica que
este objeto es una representación de una tabla.

     [Table(Name = quot;Employeesquot;)]
     public class Employees


Ahora bien, si deseáramos que nuestro objeto sea Serializable, solo debemos agregar el atributo
Serializable.

     [Serializable]
     [Table(Name = quot;Employeesquot;)]
     public class Employees


Dicha acción está indicando al compilador y CLR que la clase anterior es Serializable, es decir, que puede
ser convertida en XML o en binario para ser guardada automáticamente en un flujo de datos, por lo que
su implementación final dentro del código será algo diferente si no hubiera indicado dicho atributo.

Aunque en el .Net Framework existen muchos tipos de atributos, podemos crear tantos atributos como
sean necesarios.

Creando Atributos Personalizados

Para crear un atributo personalizado solo debemos crear una clase que herede de la clase Attribute. Por
convención las clases que se crean que heredan de Attribute, se agregan a su nombre Attribute. Si
creáramos un atributo TipoVehiculo entonces, el nombre a declarar seria TipoVehiculoAttribute, aunque
en el código solo es necesario utilizar su nombre. TipoVehiculo.



[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct)]

class TipoVehiculoAttribute : Attribute
    {
        Boolean _Is4Ruedas;
        Boolean _IsHibrido;
        String _fabricante;
        String _combustible;


          public Boolean Is4Ruedas
          {
get { return _Is4Ruedas; }
               set { _Is4Ruedas = value; }
          }
          public String Fabricante
          {
              get { return _fabricante; }
              set { _fabricante = value; }
          }
          public Boolean IsHibrido
          {
              get { return _IsHibrido; }
              set { _IsHibrido = value; }
          }



          public TipoVehiculoAttribute()
              : base()
          {

          }

          public TipoVehiculoAttribute(String NombreCombustible)
              : base()
          {
              _combustible = NombreCombustible;
          }

     }

El nombre de la clase es el nombre del atributo, TipoVehiculo. Se deriva de System.Attribute, por lo
tanto, se trata de una clase de atributo personalizado. Los parámetros del constructor son los
parámetros posicionales del atributo personalizado, en este caso, Nombre de combustible, mientras que
cualquier propiedad o campo público de lectura y escritura es un parámetro con nombre, en este caso,
IsHibrido, Is4Ruedas y Fabricante. Observe el uso del atributo AttributeUsage para validar el atributo
TipoVehículo sólo se utilizara en las declaraciones de class y struct.

Consultar atributos en tiempo de ejecución

El hecho de poder definir atributos personalizados y colocarlos en el código fuente tendría un valor
escaso si no se dispone de un método para recuperar la información y actuar sobre ella. C# tiene un
sistema de reflexión que permite recuperar la información definida con atributos personalizados. Por
ejemplo, a nuestra clase automóvil estamos asignadole nuestro atributos TipoVehiculo y le
especificamos ciertos valores los cuales podrán ser consultamos en tiempo de ejecución.



[TipoVehiculo(quot;Gasolinaquot;, Fabricante = quot;Toyotaquot;, Is4Ruedas = true, IsHibrido
= false)]
    public class Automovil
    {
}


class Program
    {
        static void Main(string[] args)
        {
            Automovil MyCarro = new Automovil();

                  printAttributeInfo(MyCarro.GetType());
                  Console.ReadKey();
           }

           private static void printAttributeInfo(Type e)
           {
               Console.WriteLine(quot;Comenzando Inspección de Atributosquot;);

                  object[] AtributosInAutomovil = e.GetCustomAttributes(false);

                  foreach (object a in AtributosInAutomovil)
                  {
                      if (a is TipoVehiculoAttribute)
                      {
                          TipoVehiculoAttribute Atr = (TipoVehiculoAttribute)a;
                          Console.WriteLine(quot;Fabricante: quot; + Atr.Fabricante);
                          Console.WriteLine(quot;4 Ruedas: quot; + Atr.Is4Ruedas);
                          Console.WriteLine(quot;Es Hibrido: quot; + Atr.IsHibrido);
                      }
                  }
           }
     }




Glosario

Metadata: es toda la información que utiliza el CLR para describir y hacer referencias a tipos y
asemblies. Metadata es independiente del lenguaje y el medio de intercambio para compiladores y
depuradores y ambientes de ejecución.

Reflection: Método utilizado para dinámicamente y en tiempo de ejecución conocer la instancia de un
tipo o crear una nueva, asignar el tipo a un objeto existente. Además de que podemos obtener el tipo
de un objeto e invocar sus métodos o acceder a sus propiedades.

Serializable: en las ciencias de computación, en el contexto de almacenamiento y transmisión de datos,
se conoce como serialización al proceso de convertir un objeto en forma binaria u otro formato (como
XML), para ser almacenada en un medio persistente o transmitida por la web. Lo que permitirá
reconstruir el objeto que fue serializado como si fuera el original.

Autor:

Stanley R. Lara
MSP República Dominicana

Contenu connexe

Tendances

Introducción a la programación y la informática. Tema 4
Introducción a la programación y la informática. Tema 4Introducción a la programación y la informática. Tema 4
Introducción a la programación y la informática. Tema 4Andres Garcia Garcia
 
Constructores en java(grupo 8)
Constructores en java(grupo 8)Constructores en java(grupo 8)
Constructores en java(grupo 8)Manuel Ch.
 
Elementos básicos de la programación orientada a objetos.
Elementos básicos de la programación orientada a objetos.Elementos básicos de la programación orientada a objetos.
Elementos básicos de la programación orientada a objetos.Whaleejaa Wha
 
Hibernate - JPA @luce 5
Hibernate - JPA @luce 5Hibernate - JPA @luce 5
Hibernate - JPA @luce 5Javier Gamarra
 
Conceptos de programacion orientada a objetos
Conceptos de programacion orientada a objetosConceptos de programacion orientada a objetos
Conceptos de programacion orientada a objetosMarisol Henao
 
Uml orientada a objetos
Uml orientada a objetosUml orientada a objetos
Uml orientada a objetosielectronicos
 
Novedades de aries
Novedades de ariesNovedades de aries
Novedades de arieslmrv
 
Capítulo 05 movimientos de objetos dinámicos
Capítulo 05 movimientos de objetos dinámicosCapítulo 05 movimientos de objetos dinámicos
Capítulo 05 movimientos de objetos dinámicosSergio Valenzuela Mayer
 
Fundamentos POO en JS. Mixins y Traits.
Fundamentos POO en JS. Mixins y Traits.Fundamentos POO en JS. Mixins y Traits.
Fundamentos POO en JS. Mixins y Traits.Maximiliano Fierro
 
OOP-JS pjs
OOP-JS pjsOOP-JS pjs
OOP-JS pjsJona Val
 
Persistencia en Java - Serialización
Persistencia en Java - SerializaciónPersistencia en Java - Serialización
Persistencia en Java - SerializaciónCarlos Hernando
 
Persistencia De Objetos(Hibernate)
Persistencia De Objetos(Hibernate)Persistencia De Objetos(Hibernate)
Persistencia De Objetos(Hibernate)Ronald Cuello
 
Bases de Datos en Java - Intro a Hibernate
Bases de Datos en Java - Intro a HibernateBases de Datos en Java - Intro a Hibernate
Bases de Datos en Java - Intro a HibernateCarlos Hernando
 
Capítulo 08 extensión lógica con procesos
Capítulo 08 extensión lógica con procesosCapítulo 08 extensión lógica con procesos
Capítulo 08 extensión lógica con procesosSergio Valenzuela Mayer
 
03. Introduccion a JavaScript y JQuery
03. Introduccion a JavaScript y JQuery03. Introduccion a JavaScript y JQuery
03. Introduccion a JavaScript y JQueryDanae Aguilar Guzmán
 

Tendances (20)

Introducción a la programación y la informática. Tema 4
Introducción a la programación y la informática. Tema 4Introducción a la programación y la informática. Tema 4
Introducción a la programación y la informática. Tema 4
 
Constructores en java(grupo 8)
Constructores en java(grupo 8)Constructores en java(grupo 8)
Constructores en java(grupo 8)
 
Elementos básicos de la programación orientada a objetos.
Elementos básicos de la programación orientada a objetos.Elementos básicos de la programación orientada a objetos.
Elementos básicos de la programación orientada a objetos.
 
Hibernate - JPA @luce 5
Hibernate - JPA @luce 5Hibernate - JPA @luce 5
Hibernate - JPA @luce 5
 
Clase 5 funciones en javaScript
Clase 5 funciones en javaScriptClase 5 funciones en javaScript
Clase 5 funciones en javaScript
 
Clase 6 objetos de javaScript
Clase 6 objetos de javaScriptClase 6 objetos de javaScript
Clase 6 objetos de javaScript
 
Clase 7 objetos globales de javaScript
Clase 7 objetos globales de javaScriptClase 7 objetos globales de javaScript
Clase 7 objetos globales de javaScript
 
Javascript objetos
Javascript objetosJavascript objetos
Javascript objetos
 
Conceptos de programacion orientada a objetos
Conceptos de programacion orientada a objetosConceptos de programacion orientada a objetos
Conceptos de programacion orientada a objetos
 
Uml orientada a objetos
Uml orientada a objetosUml orientada a objetos
Uml orientada a objetos
 
Novedades de aries
Novedades de ariesNovedades de aries
Novedades de aries
 
Capítulo 05 movimientos de objetos dinámicos
Capítulo 05 movimientos de objetos dinámicosCapítulo 05 movimientos de objetos dinámicos
Capítulo 05 movimientos de objetos dinámicos
 
Fundamentos POO en JS. Mixins y Traits.
Fundamentos POO en JS. Mixins y Traits.Fundamentos POO en JS. Mixins y Traits.
Fundamentos POO en JS. Mixins y Traits.
 
OOP-JS pjs
OOP-JS pjsOOP-JS pjs
OOP-JS pjs
 
Persistencia en Java - Serialización
Persistencia en Java - SerializaciónPersistencia en Java - Serialización
Persistencia en Java - Serialización
 
Persistencia De Objetos(Hibernate)
Persistencia De Objetos(Hibernate)Persistencia De Objetos(Hibernate)
Persistencia De Objetos(Hibernate)
 
Bases de Datos en Java - Intro a Hibernate
Bases de Datos en Java - Intro a HibernateBases de Datos en Java - Intro a Hibernate
Bases de Datos en Java - Intro a Hibernate
 
Poo 1
Poo 1Poo 1
Poo 1
 
Capítulo 08 extensión lógica con procesos
Capítulo 08 extensión lógica con procesosCapítulo 08 extensión lógica con procesos
Capítulo 08 extensión lógica con procesos
 
03. Introduccion a JavaScript y JQuery
03. Introduccion a JavaScript y JQuery03. Introduccion a JavaScript y JQuery
03. Introduccion a JavaScript y JQuery
 

Similaire à Atributos en C#: extender metadatos y consultarlos en tiempo de ejecución

Programación_del_lado_del_servidor......
Programación_del_lado_del_servidor......Programación_del_lado_del_servidor......
Programación_del_lado_del_servidor......SaulSalinasNeri
 
Framework .NET 3.5 07 Programación orientada a objetos
Framework .NET 3.5 07 Programación orientada a objetosFramework .NET 3.5 07 Programación orientada a objetos
Framework .NET 3.5 07 Programación orientada a objetosAntonio Palomares Sender
 
Programacion orientada-a-objetos
Programacion orientada-a-objetosProgramacion orientada-a-objetos
Programacion orientada-a-objetosDon Augusto
 
Php orientado a_objetos
Php orientado a_objetosPhp orientado a_objetos
Php orientado a_objetosJose Ney Quil
 
Tarea_Investigacion programacion .pdf
Tarea_Investigacion programacion .pdfTarea_Investigacion programacion .pdf
Tarea_Investigacion programacion .pdfBrimmerRamrez
 
programacion orientada a objetos
programacion orientada a objetosprogramacion orientada a objetos
programacion orientada a objetosjent46
 
Poo Java
Poo JavaPoo Java
Poo Javaeccutpl
 
Framework .NET 3.5 06 Operativa básica del framework .net
Framework .NET 3.5 06 Operativa básica del framework .netFramework .NET 3.5 06 Operativa básica del framework .net
Framework .NET 3.5 06 Operativa básica del framework .netAntonio Palomares Sender
 
2introduccionallenguajejava 141109171757-conversion-gate02
2introduccionallenguajejava 141109171757-conversion-gate022introduccionallenguajejava 141109171757-conversion-gate02
2introduccionallenguajejava 141109171757-conversion-gate02Krizztiina Pacheko
 
2) introduccion al lenguaje java
2) introduccion al lenguaje java2) introduccion al lenguaje java
2) introduccion al lenguaje javaMargarita Romero
 

Similaire à Atributos en C#: extender metadatos y consultarlos en tiempo de ejecución (20)

Programación_del_lado_del_servidor......
Programación_del_lado_del_servidor......Programación_del_lado_del_servidor......
Programación_del_lado_del_servidor......
 
Framework .NET 3.5 07 Programación orientada a objetos
Framework .NET 3.5 07 Programación orientada a objetosFramework .NET 3.5 07 Programación orientada a objetos
Framework .NET 3.5 07 Programación orientada a objetos
 
Programacion orientada-a-objetos
Programacion orientada-a-objetosProgramacion orientada-a-objetos
Programacion orientada-a-objetos
 
Leguaje de programacion C#
Leguaje de programacion C#Leguaje de programacion C#
Leguaje de programacion C#
 
Conceptos basicos POO
Conceptos basicos POOConceptos basicos POO
Conceptos basicos POO
 
Php orientado a_objetos
Php orientado a_objetosPhp orientado a_objetos
Php orientado a_objetos
 
Mv vol2 ver5.0(corregido)
Mv vol2 ver5.0(corregido)Mv vol2 ver5.0(corregido)
Mv vol2 ver5.0(corregido)
 
Oo basico
Oo basicoOo basico
Oo basico
 
Novedades de aries
Novedades de ariesNovedades de aries
Novedades de aries
 
manual de C#
manual de C#manual de C#
manual de C#
 
Manual c# 2
Manual c# 2Manual c# 2
Manual c# 2
 
Manual de c#
Manual de c#Manual de c#
Manual de c#
 
Tarea_Investigacion programacion .pdf
Tarea_Investigacion programacion .pdfTarea_Investigacion programacion .pdf
Tarea_Investigacion programacion .pdf
 
programacion orientada a objetos
programacion orientada a objetosprogramacion orientada a objetos
programacion orientada a objetos
 
Poo Java
Poo JavaPoo Java
Poo Java
 
Framework .NET 3.5 06 Operativa básica del framework .net
Framework .NET 3.5 06 Operativa básica del framework .netFramework .NET 3.5 06 Operativa básica del framework .net
Framework .NET 3.5 06 Operativa básica del framework .net
 
1 -programacion_oo
1  -programacion_oo1  -programacion_oo
1 -programacion_oo
 
2introduccionallenguajejava 141109171757-conversion-gate02
2introduccionallenguajejava 141109171757-conversion-gate022introduccionallenguajejava 141109171757-conversion-gate02
2introduccionallenguajejava 141109171757-conversion-gate02
 
INTRODUCCION LENGUAJE JAVA
INTRODUCCION LENGUAJE JAVAINTRODUCCION LENGUAJE JAVA
INTRODUCCION LENGUAJE JAVA
 
2) introduccion al lenguaje java
2) introduccion al lenguaje java2) introduccion al lenguaje java
2) introduccion al lenguaje java
 

Plus de kayrambal

SerializacióN Part 2
SerializacióN Part 2SerializacióN Part 2
SerializacióN Part 2kayrambal
 
Open And Reading Files
Open And Reading FilesOpen And Reading Files
Open And Reading Fileskayrambal
 
Navigating The File System
Navigating The File SystemNavigating The File System
Navigating The File Systemkayrambal
 
Conversion Entre Tipos Leccion 4
Conversion Entre Tipos   Leccion 4Conversion Entre Tipos   Leccion 4
Conversion Entre Tipos Leccion 4kayrambal
 
Navegar Sistema De Archivos
Navegar Sistema De ArchivosNavegar Sistema De Archivos
Navegar Sistema De Archivoskayrambal
 
Comunicaciones Unificadas De Ms
Comunicaciones Unificadas De MsComunicaciones Unificadas De Ms
Comunicaciones Unificadas De Mskayrambal
 
Linq En Visual Basic 2008
Linq En Visual Basic 2008Linq En Visual Basic 2008
Linq En Visual Basic 2008kayrambal
 
Trucos Y Efectos[1]
Trucos Y Efectos[1]Trucos Y Efectos[1]
Trucos Y Efectos[1]kayrambal
 

Plus de kayrambal (9)

SerializacióN Part 2
SerializacióN Part 2SerializacióN Part 2
SerializacióN Part 2
 
Open And Reading Files
Open And Reading FilesOpen And Reading Files
Open And Reading Files
 
Navigating The File System
Navigating The File SystemNavigating The File System
Navigating The File System
 
Conversion Entre Tipos Leccion 4
Conversion Entre Tipos   Leccion 4Conversion Entre Tipos   Leccion 4
Conversion Entre Tipos Leccion 4
 
Navegar Sistema De Archivos
Navegar Sistema De ArchivosNavegar Sistema De Archivos
Navegar Sistema De Archivos
 
Comunicaciones Unificadas De Ms
Comunicaciones Unificadas De MsComunicaciones Unificadas De Ms
Comunicaciones Unificadas De Ms
 
Linq En Visual Basic 2008
Linq En Visual Basic 2008Linq En Visual Basic 2008
Linq En Visual Basic 2008
 
Trucos Y Efectos[1]
Trucos Y Efectos[1]Trucos Y Efectos[1]
Trucos Y Efectos[1]
 
Web2.0
Web2.0Web2.0
Web2.0
 

Dernier

GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELmaryfer27m
 
Excel (1) tecnologia.pdf trabajo Excel taller
Excel  (1) tecnologia.pdf trabajo Excel tallerExcel  (1) tecnologia.pdf trabajo Excel taller
Excel (1) tecnologia.pdf trabajo Excel tallerValentinaTabares11
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxAlexander López
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativaAdrianaMartnez618894
 
Hernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxHernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxJOSEMANUELHERNANDEZH11
 
Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxMariaBurgos55
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son241514984
 
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxGoogle-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxAlexander López
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptMiguelAtencio10
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptJavierHerrera662252
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptchaverriemily794
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxJOSEFERNANDOARENASCA
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxGESTECPERUSAC
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMidwarHenryLOZAFLORE
 

Dernier (20)

GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFEL
 
Excel (1) tecnologia.pdf trabajo Excel taller
Excel  (1) tecnologia.pdf trabajo Excel tallerExcel  (1) tecnologia.pdf trabajo Excel taller
Excel (1) tecnologia.pdf trabajo Excel taller
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativa
 
Hernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxHernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptx
 
Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptx
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son
 
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxGoogle-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.ppt
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptx
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptx
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptx
 

Atributos en C#: extender metadatos y consultarlos en tiempo de ejecución

  • 1. Atributos Un atributo-un término muy sobre usado-en C# es un mecanismo que define palabras como declaraciones descriptivas, para anotar a elementos de un programa como lo son tipos, campos, métodos, y propiedades. Estos atributos son usados para extender la Metadata de la entidad seleccionada. La información que los atributos contienen puede ser devuelta en tiempo de ejecución desde la Metadata a través del mecanismo Reflexión. Puedes usar números atributos predefinidos que vienen con el FCL (Framework Class Library), o puedes definir tu propio atributo personalizado. Extraído de Wiki pedía. Los Atributos son una ponderosa herramienta para asociar el código, ya sea, Tipos, Métodos, propiedades con información declarativa, que puede ser consultada en tiempo de ejecución a través de Reflection. Existen 2 tipos de atributos. Los disponibles en el Base Class Library de .Net Framework (Built-in Attributes) y los atributos definidos por el usuario (Custom Atributes). Estos se utilizan para:  Especificar que privilegios de seguridad que una clase requiere.  Agregar Metadata a los programas. Los atributos permiten agregar información de forma declarativa que puede ser consultada en tiempo de ejecución.  Declarar habilidades de un objeto. Como si el mismo soporta serialización, etc.  También se utilizan para describir objetos. Por ejemplo, cuando miramos el código generado por LinQ para Convertir una entidad en la base de datos en un objeto en .net que se corresponda con el mismo, podemos observar como él describe mediante atributos dichos objetos. [Table(Name = quot;Employeesquot;)] public class Employees { [Column(IsPrimaryKey = true, Name = quot;EmployeeIDquot;, IsDbGenerated = true)] public Int32 EmployeeID { get; set; } [Column(Name = quot;FirstNamequot;, DbType = quot;varchar(10)quot;)] public string FirstName { get; set; } [Column(Name = quot;LastNamequot;, DbType = quot;varchar(20)quot;)] public string LastName { get; set; } }
  • 2. Utilizando Atributos Para utilizar un atributos solo debemos especificar mediante corchetes [ ], y dentro de los mismos especificar el nombre del atributo que vamos a utilizar. Si miramos el código anterior, en la declaración de la clase incluimos un atributo que nos especifica que este objeto es una representación de una tabla. [Table(Name = quot;Employeesquot;)] public class Employees Ahora bien, si deseáramos que nuestro objeto sea Serializable, solo debemos agregar el atributo Serializable. [Serializable] [Table(Name = quot;Employeesquot;)] public class Employees Dicha acción está indicando al compilador y CLR que la clase anterior es Serializable, es decir, que puede ser convertida en XML o en binario para ser guardada automáticamente en un flujo de datos, por lo que su implementación final dentro del código será algo diferente si no hubiera indicado dicho atributo. Aunque en el .Net Framework existen muchos tipos de atributos, podemos crear tantos atributos como sean necesarios. Creando Atributos Personalizados Para crear un atributo personalizado solo debemos crear una clase que herede de la clase Attribute. Por convención las clases que se crean que heredan de Attribute, se agregan a su nombre Attribute. Si creáramos un atributo TipoVehiculo entonces, el nombre a declarar seria TipoVehiculoAttribute, aunque en el código solo es necesario utilizar su nombre. TipoVehiculo. [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct)] class TipoVehiculoAttribute : Attribute { Boolean _Is4Ruedas; Boolean _IsHibrido; String _fabricante; String _combustible; public Boolean Is4Ruedas {
  • 3. get { return _Is4Ruedas; } set { _Is4Ruedas = value; } } public String Fabricante { get { return _fabricante; } set { _fabricante = value; } } public Boolean IsHibrido { get { return _IsHibrido; } set { _IsHibrido = value; } } public TipoVehiculoAttribute() : base() { } public TipoVehiculoAttribute(String NombreCombustible) : base() { _combustible = NombreCombustible; } } El nombre de la clase es el nombre del atributo, TipoVehiculo. Se deriva de System.Attribute, por lo tanto, se trata de una clase de atributo personalizado. Los parámetros del constructor son los parámetros posicionales del atributo personalizado, en este caso, Nombre de combustible, mientras que cualquier propiedad o campo público de lectura y escritura es un parámetro con nombre, en este caso, IsHibrido, Is4Ruedas y Fabricante. Observe el uso del atributo AttributeUsage para validar el atributo TipoVehículo sólo se utilizara en las declaraciones de class y struct. Consultar atributos en tiempo de ejecución El hecho de poder definir atributos personalizados y colocarlos en el código fuente tendría un valor escaso si no se dispone de un método para recuperar la información y actuar sobre ella. C# tiene un sistema de reflexión que permite recuperar la información definida con atributos personalizados. Por ejemplo, a nuestra clase automóvil estamos asignadole nuestro atributos TipoVehiculo y le especificamos ciertos valores los cuales podrán ser consultamos en tiempo de ejecución. [TipoVehiculo(quot;Gasolinaquot;, Fabricante = quot;Toyotaquot;, Is4Ruedas = true, IsHibrido = false)] public class Automovil {
  • 4. } class Program { static void Main(string[] args) { Automovil MyCarro = new Automovil(); printAttributeInfo(MyCarro.GetType()); Console.ReadKey(); } private static void printAttributeInfo(Type e) { Console.WriteLine(quot;Comenzando Inspección de Atributosquot;); object[] AtributosInAutomovil = e.GetCustomAttributes(false); foreach (object a in AtributosInAutomovil) { if (a is TipoVehiculoAttribute) { TipoVehiculoAttribute Atr = (TipoVehiculoAttribute)a; Console.WriteLine(quot;Fabricante: quot; + Atr.Fabricante); Console.WriteLine(quot;4 Ruedas: quot; + Atr.Is4Ruedas); Console.WriteLine(quot;Es Hibrido: quot; + Atr.IsHibrido); } } } } Glosario Metadata: es toda la información que utiliza el CLR para describir y hacer referencias a tipos y asemblies. Metadata es independiente del lenguaje y el medio de intercambio para compiladores y depuradores y ambientes de ejecución. Reflection: Método utilizado para dinámicamente y en tiempo de ejecución conocer la instancia de un tipo o crear una nueva, asignar el tipo a un objeto existente. Además de que podemos obtener el tipo de un objeto e invocar sus métodos o acceder a sus propiedades. Serializable: en las ciencias de computación, en el contexto de almacenamiento y transmisión de datos, se conoce como serialización al proceso de convertir un objeto en forma binaria u otro formato (como XML), para ser almacenada en un medio persistente o transmitida por la web. Lo que permitirá reconstruir el objeto que fue serializado como si fuera el original. Autor: Stanley R. Lara