Atributos Customizados
Este assunto é pouco falado, até mesmo sua utilização se torna um pouco restrita. Tive algumas idéias para a utilização deste e portanto gerou um artigo.
Mas o que são esses atributos?
Atributos da Classe
Estes atributos você encontra sobre a declaração de uma classe. Por Exemplo:
[Obsolete]
internal class Atributos
{
}
Obsolete é um atributo da classe que defini que a mesma é ultrapassada. Quando estamos criando um serviço em WCF no framework 3/3.5, nós somos obrigados a declarar os atributos, como no exemplo a seguir:
[ServiceContract]
public interface IService1
{
[OperationContract]
void DoWork();
}
Tomando conhecimento disto, vamos criar nossos atributos.
Criemos uma classe comum:
public class Atributos
{
}
Agora herde a classe System.Attribute.
public class Atributos : System.Attribute
{
}
Pronto, já é possível escrever este atributo em qualquer, classe, para tal crie uma nova classe e inclua o atributo:
[Atributos()]
class ClassModelada
{
}
Aqui temos a noção inicial de como criar, porém podemos incluir na classe de atributos mais detalhes e especializar melhor nosso atributo.
Portanto, voltamos para a classe de atributos, sobre o nome da classe vamos utilizar o Enum AttributeTargets da classe herdada de System.Attribute AttributeUsage por exemplo:
[AttributeUsage(AttributeTargets.All,AllowMultiple=true)]
public class Atributos : System.Attribute
{
}
O Enum AttributeTargets , pela documentação da msdn, vocês podem ter a visão de todos as propriedades do enum.
AllowMultiple igual a true, permite que você possa escrever mais de um atributo na mesma classe, isso é utilizando no caso você esteja atribuindo as propriedades de uma classe.
Até agora definimos como nossos atributos vão se comportar ao declararmos.
Agora vamos definir quais parâmetros os atributos terão, para isso, declaramos os encapsulamentos na classe do atributo e definimos as obrigatoriedades dentro do construtor da classe, podendo ter mais de um. Veja um exemplo:
[AttributeUsage(AttributeTargets.All, AllowMultiple = true)]
public class Atributos : System.Attribute
{
private int _cod;
public int cod
{
get { return _cod; }
set { _cod = value; }
}
private String _desc;
public String Desc
{
get { return _desc; }
set { _desc = value; }
}
public Atributos(String Desc)
{
this.Desc = Desc;
}
}
Agora volte a classe que estamos colocando o atributo e veja como será apresentado:
Como deu para notar é muito simples utilizar estes atributos, conhecendo os atributos e obtermos a utilidade destes atributos deveremos estudar então a utilização de Reflection, portanto este será o tema do próximo post.
Obrigado.
Posts Relacionados:
- Reflection e os Atributos Customizados
Para começarmos a falar de Reflection é imprescindivel entender melhor o conceito da “coisa”. A Reflexão permite que você conheça um objeto pelo seu tipo (Type) e dentro do seu tipo ter acesso a praticamente tudo o que o... - Extesion Methods
Esse assunto é bem legal e simples, como verão abaixo. Uma classe de extensão, permite que gere novos métodos para as váriaveis do projeto como acontece em .ToString(), .ToUpper(). Pemitindo costumizar o codigo ao seu gosto, centralizando seus métodos em... - Quick Post – Null Coalescing Operator
Sim, o FrameWork 4.0 tem novidades que eu considero muito interessante, estou estudando de forma prática algumas das novidades, esta aqui me fez escrever um Quick post. Veja: Esta Sintaxe: public class CoalEscingNullOperator { public int? Variavel { get; set;... - Java + RMI – Exemplo Básico
Este post de Java, esta aqui na verdade para auxiliar os alunos do Curso de Ciência da Computação, sala qual faço parte e as vezes dedico meu tempo para ajudar alguns alunos interessados! O código abaixo é quase uma... - Estrutura de Classes Instanciadas e Staticas
Neste tópico vamos falar sobre algumas particularidades da programação orientada a objetos. Todo programa possuirá suas classes e neste ambiente existirá a super-classe e a partir dela as sub-classes. Este conceito tem como foco quando falarmos de heranças entre classes....