Atributo de notas de estudio de C # (características)

En pocas palabras, los atributos son información adicional relacionada con elementos como clases, estructuras y métodos, y son extensiones de la metainformación. A través de Attribute, se puede mejorar la función del programa e incluso el propio idioma.
El atributo es un componente gramatical único en C #. Puede actuar sobre varios elementos del lenguaje, como espacios de nombres, clases, métodos, campos, atributos, indexadores, etc., y se puede adjuntar alguna información de declaración específica. Los atributos y los metadatos se almacenan juntos en el ensamblado, y el compilador u otros programas pueden leer y usar esta información.

Algunos Atributos se han definido en el sistema para representar diferentes Atributos, y los usuarios también pueden definir Atributos por sí mismos. Todas las clases de atributos son subclases directas o indirectas de System.Attribute y sus nombres terminan con Attribute. La forma general de usar Atributo en un programa es la siguiente:
agregue corchetes superiores ( []) delante de los elementos del programa relacionados (como clases y métodos en clases ), y especifique el tipo de Atributo entre corchetes y los Parámetros de Atributo transportados.
A System.ObsoleteAttributemodo de ejemplo, se utiliza delante de varios elementos del programa para marcar que este elemento está obsoleto u obsoleto y no debe utilizarse en la nueva versión.

	[Obsolete("Div已废弃, 请改用Div2")]
	public static int Div(int a, int b) {
    
     ... }

Indica que el método Div está desactualizado. Si se llama a este método, se emitirá un mensaje de advertencia durante la compilación. La información específica se indica mediante una cadena en los parámetros de Obsolete.
Más ejemplos:

using System;
using System.Reflection;

namespace ConsoleApp10Attribute
{
    
    
	[AttributeUsage(AttributeTargets.Class |
		AttributeTargets.Method,
		AllowMultiple = true)]
	public class HelpAttribute : System.Attribute
	{
    
    
		public readonly string Url;
		public string Topic {
    
     get => topic; set => topic = value; }
		private string topic;

		public HelpAttribute(string url) {
    
    
			this.Url = url;
		}
	}

	[HelpAttribute("https://msvc/MyClassInfo", Topic = "Test"),
		Help("https://my.com/about/class")]
	class MyClass
	{
    
    
		[Help("http://my.com/about/method")]
		public void MyMethod(int i) {
    
    
			return;
		}
	}

	class MemberInfo_GetCustomAttributes
	{
    
    
		static void Main(string[] args) {
    
    
			Console.WriteLine("Hello World!");

			Type myType = typeof(MyClass);

			object[] attributes = myType.GetCustomAttributes(false);
			for (int i = 0; i < attributes.Length; i++) {
    
    
				PrintAttributeInfo(attributes[i]);
			}

			MemberInfo[] myMembers = myType.GetMembers();
			for (int i = 0; i < myMembers.Length; i++) {
    
    
				Console.WriteLine("\nNumber {0}: ", myMembers[i]);
				Object[] myAttributes = myMembers[i].GetCustomAttributes(false);
				for (int j = 0; j < myAttributes.Length; j++) {
    
    
					PrintAttributeInfo(myAttributes[j]);
				}
			}
		}

		static void PrintAttributeInfo(object attr) {
    
    
			if (attr is HelpAttribute) {
    
    
				HelpAttribute attrh = (HelpAttribute)attr;
				Console.WriteLine("----Url: " + attrh.Url + "  Topic: " + attrh.Topic);
			}
		}
	}
}

Supongo que te gusta

Origin blog.csdn.net/qq_45349225/article/details/114156347
Recomendado
Clasificación