SlideShare ist ein Scribd-Unternehmen logo
1 von 5
Downloaden Sie, um offline zu lesen
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

Weitere ähnliche Inhalte

Was ist angesagt?

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
 

Was ist angesagt? (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
 

Ähnlich wie Atributos

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
 
2) introduccion al lenguaje java
2) introduccion al lenguaje java2) introduccion al lenguaje java
2) introduccion al lenguaje javaMargarita Romero
 
2introduccionallenguajejava 141109171757-conversion-gate02
2introduccionallenguajejava 141109171757-conversion-gate022introduccionallenguajejava 141109171757-conversion-gate02
2introduccionallenguajejava 141109171757-conversion-gate02Krizztiina Pacheko
 

Ähnlich wie Atributos (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
 
2) introduccion al lenguaje java
2) introduccion al lenguaje java2) introduccion al lenguaje java
2) introduccion al lenguaje java
 
INTRODUCCION LENGUAJE JAVA
INTRODUCCION LENGUAJE JAVAINTRODUCCION LENGUAJE JAVA
INTRODUCCION LENGUAJE JAVA
 
2introduccionallenguajejava 141109171757-conversion-gate02
2introduccionallenguajejava 141109171757-conversion-gate022introduccionallenguajejava 141109171757-conversion-gate02
2introduccionallenguajejava 141109171757-conversion-gate02
 

Mehr von 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
 

Mehr von 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
 

Kürzlich hochgeladen

Los mejores simuladores de circuitos electrónicos.pdf
Los mejores simuladores de circuitos electrónicos.pdfLos mejores simuladores de circuitos electrónicos.pdf
Los mejores simuladores de circuitos electrónicos.pdfodalistar77
 
De Código a Ejecución: El Papel Fundamental del MSIL en .NET
De Código a Ejecución: El Papel Fundamental del MSIL en .NETDe Código a Ejecución: El Papel Fundamental del MSIL en .NET
De Código a Ejecución: El Papel Fundamental del MSIL en .NETGermán Küber
 
La tablet trabajo en grupo del grado 9-2
La tablet trabajo en grupo del grado 9-2La tablet trabajo en grupo del grado 9-2
La tablet trabajo en grupo del grado 9-2montoyagabriela340
 
La Electricidad y La Electrónica.pdf....
La Electricidad y La Electrónica.pdf....La Electricidad y La Electrónica.pdf....
La Electricidad y La Electrónica.pdf....Aaron Betancourt
 
Análisis de artefactos tecnologicos .pdf
Análisis de artefactos tecnologicos .pdfAnálisis de artefactos tecnologicos .pdf
Análisis de artefactos tecnologicos .pdfcastrodanna185
 
Carta de Premio y Excel angeline 11-2pdf
Carta de Premio y Excel angeline 11-2pdfCarta de Premio y Excel angeline 11-2pdf
Carta de Premio y Excel angeline 11-2pdfangelinebocanegra1
 
PRESENTACION DEL TEMA LOS MEJORES SIMULADORES DE CIRCUITOS ELCTRONICOS
PRESENTACION DEL TEMA LOS MEJORES SIMULADORES DE CIRCUITOS ELCTRONICOSPRESENTACION DEL TEMA LOS MEJORES SIMULADORES DE CIRCUITOS ELCTRONICOS
PRESENTACION DEL TEMA LOS MEJORES SIMULADORES DE CIRCUITOS ELCTRONICOSLincangoKevin
 
VIDEOS DE APOYO.docx E
VIDEOS DE APOYO.docx                                  EVIDEOS DE APOYO.docx                                  E
VIDEOS DE APOYO.docx Emialexsolar
 
TENDENCIAS DE IA Explorando el futuro de la tecnologia.pdf
TENDENCIAS DE IA Explorando el futuro de la tecnologia.pdfTENDENCIAS DE IA Explorando el futuro de la tecnologia.pdf
TENDENCIAS DE IA Explorando el futuro de la tecnologia.pdfJoseAlejandroPerezBa
 
Actividad 1-PRESENTACIÓN ANIMADA.pptxPreservación y conservación de los docum...
Actividad 1-PRESENTACIÓN ANIMADA.pptxPreservación y conservación de los docum...Actividad 1-PRESENTACIÓN ANIMADA.pptxPreservación y conservación de los docum...
Actividad 1-PRESENTACIÓN ANIMADA.pptxPreservación y conservación de los docum...OLGAMILENAMONTAEZNIO
 
Inmersión global en ciberseguridad e IA en la conferencia RSA.pdf
Inmersión global en ciberseguridad e IA en la conferencia RSA.pdfInmersión global en ciberseguridad e IA en la conferencia RSA.pdf
Inmersión global en ciberseguridad e IA en la conferencia RSA.pdfOBr.global
 
El diseño de Algoritmos Paralelos.pdf - analisis de algortimos
El diseño de Algoritmos Paralelos.pdf - analisis de algortimosEl diseño de Algoritmos Paralelos.pdf - analisis de algortimos
El diseño de Algoritmos Paralelos.pdf - analisis de algortimosLCristinaForchue
 
Actividad 14_ Diseño de Algoritmos Paralelos.pdf
Actividad 14_ Diseño de Algoritmos Paralelos.pdfActividad 14_ Diseño de Algoritmos Paralelos.pdf
Actividad 14_ Diseño de Algoritmos Paralelos.pdfalejandrogomezescoto
 
Inteligencia artificial dentro de la contabilidad
Inteligencia artificial dentro de la contabilidadInteligencia artificial dentro de la contabilidad
Inteligencia artificial dentro de la contabilidaddanik1023m
 
Matriz de integración de tecnologías- Paola Carvajal.docx
Matriz de integración de tecnologías- Paola Carvajal.docxMatriz de integración de tecnologías- Paola Carvajal.docx
Matriz de integración de tecnologías- Paola Carvajal.docxPaolaCarolinaCarvaja
 
Presentación - Diseño de Algoritmos Paralelos - Grupo 2.pdf
Presentación - Diseño de Algoritmos Paralelos - Grupo 2.pdfPresentación - Diseño de Algoritmos Paralelos - Grupo 2.pdf
Presentación - Diseño de Algoritmos Paralelos - Grupo 2.pdfymiranda2
 
Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...
Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...
Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...RaymondCode
 
Tecnológia 2024.docx.Tecnológia 2024.docx.
Tecnológia 2024.docx.Tecnológia 2024.docx.Tecnológia 2024.docx.Tecnológia 2024.docx.
Tecnológia 2024.docx.Tecnológia 2024.docx.marianarodriguezc797
 

Kürzlich hochgeladen (20)

Los mejores simuladores de circuitos electrónicos.pdf
Los mejores simuladores de circuitos electrónicos.pdfLos mejores simuladores de circuitos electrónicos.pdf
Los mejores simuladores de circuitos electrónicos.pdf
 
De Código a Ejecución: El Papel Fundamental del MSIL en .NET
De Código a Ejecución: El Papel Fundamental del MSIL en .NETDe Código a Ejecución: El Papel Fundamental del MSIL en .NET
De Código a Ejecución: El Papel Fundamental del MSIL en .NET
 
BEDEC Proyecto y obra , novedades 2024 - Xavier Folch
BEDEC Proyecto y obra , novedades 2024 - Xavier FolchBEDEC Proyecto y obra , novedades 2024 - Xavier Folch
BEDEC Proyecto y obra , novedades 2024 - Xavier Folch
 
La tablet trabajo en grupo del grado 9-2
La tablet trabajo en grupo del grado 9-2La tablet trabajo en grupo del grado 9-2
La tablet trabajo en grupo del grado 9-2
 
La Electricidad y La Electrónica.pdf....
La Electricidad y La Electrónica.pdf....La Electricidad y La Electrónica.pdf....
La Electricidad y La Electrónica.pdf....
 
Análisis de artefactos tecnologicos .pdf
Análisis de artefactos tecnologicos .pdfAnálisis de artefactos tecnologicos .pdf
Análisis de artefactos tecnologicos .pdf
 
Carta de Premio y Excel angeline 11-2pdf
Carta de Premio y Excel angeline 11-2pdfCarta de Premio y Excel angeline 11-2pdf
Carta de Premio y Excel angeline 11-2pdf
 
PRESENTACION DEL TEMA LOS MEJORES SIMULADORES DE CIRCUITOS ELCTRONICOS
PRESENTACION DEL TEMA LOS MEJORES SIMULADORES DE CIRCUITOS ELCTRONICOSPRESENTACION DEL TEMA LOS MEJORES SIMULADORES DE CIRCUITOS ELCTRONICOS
PRESENTACION DEL TEMA LOS MEJORES SIMULADORES DE CIRCUITOS ELCTRONICOS
 
VIDEOS DE APOYO.docx E
VIDEOS DE APOYO.docx                                  EVIDEOS DE APOYO.docx                                  E
VIDEOS DE APOYO.docx E
 
TENDENCIAS DE IA Explorando el futuro de la tecnologia.pdf
TENDENCIAS DE IA Explorando el futuro de la tecnologia.pdfTENDENCIAS DE IA Explorando el futuro de la tecnologia.pdf
TENDENCIAS DE IA Explorando el futuro de la tecnologia.pdf
 
Actividad 1-PRESENTACIÓN ANIMADA.pptxPreservación y conservación de los docum...
Actividad 1-PRESENTACIÓN ANIMADA.pptxPreservación y conservación de los docum...Actividad 1-PRESENTACIÓN ANIMADA.pptxPreservación y conservación de los docum...
Actividad 1-PRESENTACIÓN ANIMADA.pptxPreservación y conservación de los docum...
 
Inmersión global en ciberseguridad e IA en la conferencia RSA.pdf
Inmersión global en ciberseguridad e IA en la conferencia RSA.pdfInmersión global en ciberseguridad e IA en la conferencia RSA.pdf
Inmersión global en ciberseguridad e IA en la conferencia RSA.pdf
 
El diseño de Algoritmos Paralelos.pdf - analisis de algortimos
El diseño de Algoritmos Paralelos.pdf - analisis de algortimosEl diseño de Algoritmos Paralelos.pdf - analisis de algortimos
El diseño de Algoritmos Paralelos.pdf - analisis de algortimos
 
Actividad 14_ Diseño de Algoritmos Paralelos.pdf
Actividad 14_ Diseño de Algoritmos Paralelos.pdfActividad 14_ Diseño de Algoritmos Paralelos.pdf
Actividad 14_ Diseño de Algoritmos Paralelos.pdf
 
Inteligencia artificial dentro de la contabilidad
Inteligencia artificial dentro de la contabilidadInteligencia artificial dentro de la contabilidad
Inteligencia artificial dentro de la contabilidad
 
Matriz de integración de tecnologías- Paola Carvajal.docx
Matriz de integración de tecnologías- Paola Carvajal.docxMatriz de integración de tecnologías- Paola Carvajal.docx
Matriz de integración de tecnologías- Paola Carvajal.docx
 
BEDEC Sostenibilidad, novedades 2024 - Laura Silva
BEDEC Sostenibilidad, novedades 2024 - Laura SilvaBEDEC Sostenibilidad, novedades 2024 - Laura Silva
BEDEC Sostenibilidad, novedades 2024 - Laura Silva
 
Presentación - Diseño de Algoritmos Paralelos - Grupo 2.pdf
Presentación - Diseño de Algoritmos Paralelos - Grupo 2.pdfPresentación - Diseño de Algoritmos Paralelos - Grupo 2.pdf
Presentación - Diseño de Algoritmos Paralelos - Grupo 2.pdf
 
Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...
Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...
Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...
 
Tecnológia 2024.docx.Tecnológia 2024.docx.
Tecnológia 2024.docx.Tecnológia 2024.docx.Tecnológia 2024.docx.Tecnológia 2024.docx.
Tecnológia 2024.docx.Tecnológia 2024.docx.
 

Atributos

  • 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