2010-02-19 20 views
42

Vi algunos ejemplos de atributos de utilización, p. Ej. (como un mapa para la fábrica dinámica) http://msdn.microsoft.com/en-us/magazine/cc164170.aspx¿Cuándo debería usar el atributo en C#?

¿Preguntándome cuál es la ventaja de usar el atributo? Puedo encontrar la referencia en http://msdn.microsoft.com/en-gb/z0w1kczw(VS.80).aspx Sin embargo, no estoy seguro de cuándo y por qué debo intentar usarlo.

+4

Cualquier cosa que terminar decidiendo que hacer, mantener sus atributos como datos puros con ningún comportamiento. Si necesita implementar un comportamiento basado en el atributo, coloque el comportamiento en otra clase para que pueda variar los dos de forma independiente. –

Respuesta

29

En .NET Framework, atributos pueden ser utilizados por muchas razones - como

  • Definir qué clases son serializable

  • Elegir qué métodos se exponen en un servicio Web

Attributes nos permiten agregar descriptions a clases, propiedades y métodos en tiempo de diseño que luego pueden examinarse en tiempo de ejecución mediante reflexión.

Considere este ejemplo:

Digamos que tiene una clase que tiene un método de versión más antigua que todavía está en uso por cualquier razón y ahora que ha llegado con una nueva versión de la clase que hace fantástica uso de Lista Genérica y LINQ y tiene un nuevo método para propósitos similares. Desea que los desarrolladores prefieran el nuevo proporcionado en la versión posterior de su biblioteca. Cómo lo harás ? Una forma es escribir en la documentación. Una mejor forma es usar el atributo de la siguiente manera.

public class AccountsManager 
{ 
    [Obsolete("prefer GetAccountsList", true)] 
    static Account[] GetAccounts() { }  
    static List<Account> GetAccountsList() { }  
} 

Si se utiliza un método obsolete cuando se compila el programa, el desarrollador obtiene esta información y decide en consecuencia.

AccountManager.GetAccounts() es obsoleta: prefieren GetAccountsList

Además podemos crear y añadir Custom Attributes según los requisitos.

Referencia:


Esperanza esto ayuda

+3

Los atributos son metadatos agregados a una clase, interfaz, función, propiedad, etc. en .NET. Los metadatos proporcionan información adicional ** sobre ** un elemento y le dan al usuario del artículo la posibilidad de atacarlo. Los atributos se almacenan en el Tipo y no en la instancia. – AxelEckenberger

+0

Gracias por su respuesta y la referencia. Tal vez no soy tan bueno en C# para encontrar una situación en la que deseo usar un atributo personalizado. Trato el atributo como una descripción compilada. Como requiere una lenta reflexión para usar, lo que me hace sentir que no es tan útil. – ccppjava

+0

He actualizado la respuesta con un ejemplo. –

0

el .NET Framework predefine y usos tipos de atributos para controlar el comportamiento de tiempo de ejecución de la aplicación.

Considere el atributo [webmethod], en el marco de tiempo de ejecución resuelve este atributo y determina que este método se expone en un servicio web.

De la misma manera, puede escribir sus atributos personalizados para controlar el comportamiento de su aplicación en tiempo de ejecución. Los atributos pueden apuntar a clases, métodos, propiedades, delegar, enumerar, evento, campo ...

Para resolver el atributo en tiempo de ejecución, debe usar la reflexión.

Consulte el enlace MSDN para obtener más detalles.

4

Considere un atributo como metadatos sobre el método o la propiedad a la que pertenece. Dice algo más sobre un miembro.

5

Los atributos son apropiados cuando desea adjuntar metadatos a sus clases o miembros de la clase, así como al aplicar un comportamiento común sin tener que implementar una determinada interfaz para cada unidad que comparte el comportamiento. Este último es un ejemplo de aspect-oriented programming.

Cuestiones relacionadas