2016-12-30 2 views
2

J'ai vu beaucoup de tables/colonnes de mappage ORM vers des classes correspondantes en C# à l'aide d'attributs personnalisés. Même le cadre d'entité fait de même. J'essaie de comprendre quand et comment utiliser les attributs pour rendre ma solution plus efficace et évolutive.Quand et comment utiliser la programmation par attributs

Certains des énoncés de problème, je suppose qu'il pourrait être utile sont 1. Tables de mappage/Vues aux classes

Table Employee{ Name, Age, salary, height}... 
class Employee{Name, Age, Salary, Height}... 
  1. Mapping KeyValue paire/dictionnaire classe

Tableau

PersonAttributes{ 
Column1, Column2 
"Age", "25" 
"Salary", "3000" 
"Weight", "80" 
... 
} 

Class Person{ 
string Name; 

[MapToTable(TableName="PersonAttributes", Key="Column1", Value="Column2",DataType="Int", Field="Age",)] 
int Age; 

[MapToTable(TableName="PersonAttributes", Key="Column1", Value="Column2",DataType="Int", Field="Weight",)] 
int Weight; 

[MapToTable(TableName="PersonAttributes", Key="Column1", Value="Column2",DataType="Int", Field="Salary",)] 
int Salary; 
} 

Répondre

1

Metaprogramming est utile pour décorer votre membres de l'assemblée (c.-à-d. assemblées, types ...) et les membres de type pour fournir des indications sur lesquelles votre système peut faire des suppositions pour effectuer certaines actions ou se comporter d'une manière spécifique.

En fait, dans .NET, les attributs sont un moyen de fournir plus de sémantique que ce que font déjà les modificateurs. Par exemple:

  • public, private, internal, protected ...
  • implicit, operator, overrides ...

Plus tard, en utilisant la réflexion, vous pouvez vos introspect membres de montage et d'assemblage à mettre en place un environnement basé sur eux. Par exemple, il y a l'annotation de données [Required] pour indiquer à une structure de validation, OR/M ou des sérialiseurs qu'une propriété de classe donnée doit contenir obligatoirement une valeur. En conclusion, je ne dirais pas que les attributs sont juste là pour décrire la sémantique de cartographie, mais ils sont un outil puissant pour implémenter des conventions ou une approche déclarative pour fournir des conseils sur la façon dont votre système devrait fonctionner.