De que se trata o artigo

O artigo demonstra os atributos do .NET Framework e suas principais utilizações dentro da linguagem C# e seus projetos. Também mostra como criar e ler atributos customizados passando pelas principais formas de se aplicar estes em diversos tipos de aplicações.

Em que situação o tema é útil

Atributos servem para fornecer metadados sobre os elementos do código e, dependendo da maneira como são definidos, alterar o comportamento da aplicação. Os atributos são constantemente usados em conjunto com técnicas de Reflection, para obter dados do aplicativo durante o runtime. Os atributos ajudam em diversas tarefas que vão desde informações adicionais sobre um elemento do programa (classes, propriedades e métodos), alteração do comportamento da serialização XML de uma classe, definição de classes para testes unitários, etc. Os atributos podem diminuir a complexidade do código gerado ou, pelo menos, dar mais flexibilidade ao mesmo.

Utilizando atributos com C#

Atributos acrescentam dados sobre elementos da linguagem de programação quer sejam classes, propriedades, assembly etc. Podem ser usados para documentar ou fornecer metadados para serem recuperados via Reflection e a partir dos dados que forem recuperados, alterar ou não o funcionamento do assembly.

Em muitos casos também podem ser usados para especificar tipos especiais de classes e métodos como os que são usados por Webservices e testes unitários.

Outro exemplo de uso dos atributos para afetar o funcionamento do código é quando atributos são usados para customizar a geração de documentos XML através da serialização de classes no Framework.

Estes e outros conceitos e exemplos serão dados neste artigo que também mostra uma utilização bem particular com o MVC.

Os atributos na linguagem C# e no .NET Framework são uma maneira de se acrescentar dados sobre um assembly (executável ou class library), uma classe, um método e outros elementos da linguagem, de uma maneira declarativa, ou seja, diretamente no código. Entre os muitos dados que podem ser acrescentados estão URLs relacionadas com o projeto, tópicos de documentação. Também são acrescentadas informações auto descritivas de componentes e também dados para serem recuperados via reflection durante a execução.

Entre as utilizações mais tradicionais da utilização dos atributos estão:

· Informações sobre o assembly;

· Informações sobre classes e métodos;

· Serialização;

· Atribuição de permissões de segurança;

· Identificação de tipos especiais de classes e métodos;

· Definição de constraints para propriedades usadas em classes para armazenamento de dados.

Os atributos são de vários tipos. Um uso bem típico é a definição dos dados do assembly. Observe a Listagem 1 que mostra os atributos padrão gerados pelo Visual Studio.

Listagem 1. Atributos de Assembly

1 using System.Reflection;
 2 using System.Runtime.CompilerServices;
 3 using System.Runtime.InteropServices;
 4
 5 // General Information about an assembly is controlled through the following
 6 // set of attributes. Change these attribute values to modify the information
 7 // associated with an assembly.
 8 [assembly: AssemblyTitle("dynamicDemoData")]
 9 [assembly: AssemblyDescription("")]
10 [assembly: AssemblyConfiguration("")]
11 [assembly: AssemblyCompany("")]
12 [assembly: AssemblyProduct("dynamicDemoData")]
13 [assembly: AssemblyCopyright("Copyright ©  2011")]
14 [assembly: AssemblyTrademark("")]
15 [assembly: AssemblyCulture("")]
16
17 // Setting ComVisible to false makes the types in this assembly not visible
18 // to COM components.  If you need to access a type in this assembly from
19 // COM, set the ComVisible attribute to true on that type.
20 [assembly: ComVisible(false)]
21
22 // The following GUID is for the ID of the typelib if this project is exposed to COM
23 [assembly: Guid("c815295a-4ac0-483f-908d-4fb50d2a0856")]
24
25 // Version information for an assembly consists of the following four values:
26 //
27 //      Major Version
28 //      Minor Version
29 //      Build Number
30 //      Revision
31 //
32 // You can specify all the values or you can default the Build and Revision Numbers
33 // by using the '*' as shown below:
34 // [assembly: AssemblyVersion("1.0.*")]
35 [assembly: AssemblyVersion("1.0.0.0")]
36 [assembly: AssemblyFileVersion("1.0.0.0")]

Essa listagem corresponde ao arquivo AssemblyInfo.cs que pode ser encontrado nos projetos do Visual Studio na pasta Properties. Os dados deste arquivo oferecem informações sobre o executável e tanto podem ser editadas manualmente como também alteradas via editor de propriedades do projeto (menu Project > Properties do Visual Studio).

No C# a sintaxe básica pra os atributos é colocar estes entre colchetes sobre o elemento que se deseja definir os valores. Um atributo pode ser simples, como por exemplo, o atributo que define uma classe como passível de serialização:

[Serializable]
 public class foo
 {
   ...
 } ...

Quer ler esse conteúdo completo? Tenha acesso completo