El mejor tutorial de propiedades de C # (atributo) en 2024. En este tutorial podrás aprender propiedades predeterminadas (atributo),atributos predefinidos (atributo),Crear atributos personalizados (atributo),
Características (Atributo) es un programa para la transferencia de varios elementos (tales como clases, métodos, estructuras, enumeraciones, componentes, etc.) en el comportamiento en tiempo de ejecución de la información de la etiqueta declarativa.Se puede añadir información declarativa al programa mediante el uso de la función. Una etiqueta de declaración se aplica colocando en frente de los elementos entre corchetes ([]) para describir.
Características (atributo) para añadir metadatos, tales como instrucciones de compilación y comentarios, la descripción, los métodos, información adicional y así sucesivamente. .Net Framework proporciona dos tipos de funciones: propiedadespredefinidasy propiedadespersonalizadas.
propiedades predeterminadas (atributo) la siguiente sintaxis:
[Atributo (positional_parameters, name_parameter = valor, es.)] elemento
Características (atributo) nombres y valores se especifican entre corchetes, colocado antes del elemento al que se aplica. positional_parameters predeterminados información necesaria, name_parameter predeterminados información opcional.
.Net Framework proporciona tres atributos predefinidos:
Predefinida atributosAttributeUsage describe cómo utilizar una clase de atributo personalizado.Se especifica el tipo de propiedades se puede aplicar al proyecto.
Disposiciones de esta función tiene la siguiente sintaxis:
[AttributeUsage ( validon, AllowMultiple = allowMultiple, = Heredados heredaron )]
en la que:
Por ejemplo:
[AttributeUsage (AttributeTargets.Class | AttributeTargets.Constructor | AttributeTargets.Field | AttributeTargets.Method | AttributeTargets.Property, AllowMultiple = true)]
Esta característica marca un método condición predefinida, su aplicación depende de su parte superior identificador de preprocesamiento.
Esto causará que la compilación condicional de llamadas a métodos, dependiendo del valor especificado comode depuración o de seguimiento.Por ejemplo, el valor de la variable se visualiza cuando la depuración del código.
Disposiciones de esta función tiene la siguiente sintaxis:
[Condicional ( conditionalSymbol )]
Por ejemplo:
[Condicional ( "Test")]
El siguiente ejemplo muestra esta característica:
#define DEBUG using System; using System.Diagnostics; Public class MiClase { [Condicional ( "Test")] public void mensaje (msg cadena) { Console.WriteLine (msg); } } clase Test { function1 static void () { Myclass.Message ( "En función 1."); function2 (); } function2 static void () { Myclass.Message ( "En función 2."); } public static void Principal () { Myclass.Message ( "En la función principal."); function1 (); Console.ReadKey (); } }
Cuando el código se compila y ejecuta, produce los siguientes resultados:
En función principal En función 1 En función 2
Los atributos predefinidos etiquetados entidades de programas no deben ser utilizados. Es decir, podrá determinar el compilador de desprenderse de un elemento objetivo en particular. Por ejemplo, cuando se utiliza un nuevo método en una clase, pero que todavía quieren mantener a la clase en el método antiguo, puede mostrar un nuevo método debe utilizarse en lugar del viejo método de mensaje para marcarlo como obsoleto (obsoleto a).
Disposiciones de esta función tiene la siguiente sintaxis:
[Obsoleta ( mensaje )] [Obsoleta ( mensaje, ESERROR )]
en la que:
El siguiente ejemplo muestra esta característica:
using System; Public class MiClase { [Obsoleta ( "No utilice OldMethod, utilice newMethod lugar", true)] OldMethod static void () { Console.WriteLine ( "Es el viejo método"); } NewMethod static void () { Console.WriteLine ( "Es el nuevo método"); } public static void Principal () { OldMethod (); } }
Cuando intenta compilar el programa, el compilador dará un mensaje de error que indica:
No utilice OldMethod, utilice en su lugar newMethod
Net Framework permite crear propiedades personalizadas para almacenar información declarativa, y se pueden recuperar en tiempo de ejecución. Esta información se basa en los criterios de diseño y la aplicación tiene que estar asociado con cualquier elemento de destino.
Creación y uso de características personalizadas incluyen cuatro pasos:
El paso final incluye escribir un programa simple para leer los metadatos para encontrar los distintos símbolos. Los metadatos son datos y la información utilizada para describir otros datos. El programa debe utilizar la reflexión para acceder a las propiedades en tiempo de ejecución. Vamos a discutir esto en detalle en el siguiente capítulo.
Una nueva propiedad personalizada que se derivan de la claseSystem.Attribute.Por ejemplo:
// Arreglado un atributo personalizado se asigna a la clase y sus miembros [AttributeUsage (AttributeTargets.Class | AttributeTargets.Constructor | AttributeTargets.Field | AttributeTargets.Method | AttributeTargets.Property, AllowMultiple = true)] Debuginfo clase pública: System.Attribute
En el código anterior, hemos declarado un atributo personalizado denominadodebuginfode.
Vamos a construir un atributo personalizado denominadodebuginfo,la información se almacena en el depurador característica obtenida. Se almacena la siguiente información:
Nuestrosdebuginfoprimeros tres clases se pueden utilizar para almacenar información privada de tres propiedad (propiedad) y con una propiedad pública para almacenar mensajes para (propiedad). posicionamiento modo que no necesitará los números de errores nombre del desarrollador y la fecha de la revisión de clase debuginfo (posicional) parámetro, el mensaje es un nombre opcional (con nombre) parámetros.
Cada propiedad debe tener al menos un constructor. posicionamiento requerido (posicional) parámetro que debe ser aprobada por el constructor. El código siguiente muestra las categoríasdebuginfo:
// Arreglado un atributo personalizado se asigna a la clase y sus miembros [AttributeUsage (AttributeTargets.Class | AttributeTargets.Constructor | AttributeTargets.Field | AttributeTargets.Method | AttributeTargets.Property, AllowMultiple = true)] Debuginfo clase pública: System.Attribute { Bugno int privado; desarrollador cadena privada; lastReview cadena privada; mensaje de cadena pública; debuginfo pública (int bg, dev cadena, cadena d) { this.bugNo = BG; this.developer = dev; this.lastReview = d; } public int BUGNO { obtener { volver BUGNO; } } public String desarrollador { obtener { desarrollador de retorno; } } cadena pública LastReview { obtener { volver lastReview; } } public String Mensaje { obtener { mensaje de retorno; } conjunto { message = valor; } } }
Mediante la colocación de propiedades inmediatamente antes de su objetivo de aplicar esta función:
[Debuginfo (45, "Zara Ali", "08/12/2012", mensaje = "El retorno de coincidencia de tipos")] [Debuginfo (49, "Nuha Ali", "10/10/2012", Mensaje = "variables no utilizada")] clase Rectangle { // Variables de miembro protegido de doble longitud; protegida de doble ancho; Rectángulo pública (doble L, doble w) { longitud = l; width = w; } [Debuginfo (55, "Zara Ali", "19/10/2012", Message = "El retorno de coincidencia de tipos")] GetArea doble pública () { volver longitud * anchura; } [Debuginfo (56, "Zara Ali", "19/10/2012")] Pantalla public void () { Console.WriteLine ( "Longitud: {0}", longitud); Console.WriteLine ( "Ancho: {0}", ancho); Console.WriteLine ( "Área: {0}", getArea ()); } }
En el siguiente capítulo, utilizaremos la clase de objeto de reflexión para recuperar esta información.