Clase Attributes en C#

Seguramente algunos de ustedes han visto algunas “etiquetas” ubicadas en la parte superior de algunos de los métodos o clases, principalmente cuando están implementando  algún Framework,  cuya funcionalidad de dichas “etiquetas”  es  es agregar cierto comportamiento de la clase dentro del framework.

Para mi sorpresa, dichas “etiquetas” no era lo que pensaba. A mi entender, son constructores de alguna clase que hereda de Attribute.

Veamos un ejemplo. Comencemos creando una clase “MyGridColumnAttribute”

Crear Clase tipo Attribute

[AttributeUsage(AttributeTargets.Property)]
public class MyGridColumnAttribute: Attribute
{
 
  private string _headerText;
  private bool _isHidden;
 
  public string HeaderText
  {
    get { return _headerText; }
    set { _headerText = value; }
  }
 
  public bool IsHidden
  {
    get { return _isHidden; }
    set { _isHidden = value; }
  }
 
  public PagingGridAttribute(string headerText, bool isHidden)
  {
    _headerText = headerText;
    _isHidden = isHidden;
  }
}

 

Un Par de Reglas

  1. En la parte superior de la declaración de la clase se encuentra el atributo “[AttributeUsage(AttributeTargets.Property)]” la cual indica en que parte de la clases pueden ser implementado  “MyGridColumnAttribute”. Para mas referencias diríjanse a la página de Microsoft.
  2. El nombre de la clase debe de terminar con  Attribute (MyGridColumnAttribute).

 Utilizar la Clase Attribute

Ahora, es tiempo de utilizar nuestra recién creada clase. Para esto, debemos crear otra clase que llamaremos MyCustomDataSource:

 

public class MyCustomDataSource
{
  private string _firstName, _lastName, _nickName, _password;
 
  [MyGridColumnAttribute("Nombre", true)]
  public string FirstNombre
  {
    get{ return _firstName; }
    set{ _firstName = value; }
  }
 
  [MyGridColumnAttribute("Apellido", true)]
  public string LastName
  {
    get{ return _lastName; }
    set{ _lastName = value; }
  }
 
  [MyGridColumnAttribute("Clave", true)]
  public string NickName
  {
    get{ return _nickName; }
    set{ _nickName = value; }
  }
 
  [MyGridColumnAttribute("Contraseña", true)]
  public string Password
  {
    get{ return _password; }
    set{ _password = value; }
  }
}

 

Para aquellos que gusten cooperar con la causa, el siguiente paso es crear un componente que utilice “MyCustomDataSource” y lo muestre en alguna página Web.

 

Analista/Desarrollador y cofundador de QBit Mexhico. Tecnologías utilizadas Android, Java (EJB, Servlets, Faces, Groovy & Grails, Maven, Swing), .Net (C#, VB, ASP, MVC), Delphi, Spring, Hibernate, DTSx, Oracle, T-SQL, Firebird, MySQL, MongoDB, NodeJs, ReactJs (Flux). Sistemas Operativos Mac, Ubuntu y Windows.

Twitter LinkedIn 

Compartir en...Tweet about this on TwitterPin on Pinterest0Share on LinkedIn0Share on Google+0Share on Facebook0