2010-08-26 9 views
10

Y a-t-il une propriété qui vous permet de spécifier un nom convivial pour une propriété dans une classe?Existe-t-il un attribut .NET pour spécifier le "nom d'affichage" d'une propriété?

Par exemple, dire que j'ai la classe suivante:

public class Position 
{ 
    public string EmployeeName { get; set; } 
    public ContactInfo EmployeeContactInfo { get; set; } 
} 

J'aimerais préciser que le nom d'affichage pour la propriété EmployeeName est « Nom de l'employé » et le nom d'affichage pour la propriété EmployeeContactInfo est " Coordonnées de l'employé ".

Il est assez facile d'écrire ma propre classe d'attribut qui me permet de le faire:

[PropertyDisplayInfo(DisplayName = "Employee Name")] 
public string EmployeeName { get; set; } 

Mais est quelque chose comme ceci déjà inclus dans .NET?

Répondre

13
+11

à partir de .NET 4, il y a un meilleur attribut pour cela, System.ComponentModel.DataAnnotations.DisplayAttribute –

+5

Pour le bénéfice d'autres personnes à la recherche de cette answer, System.ComponentModel.DataAnnotations.DisplayAttribute n'est pas pris en charge par les contrôles Windows Forms DataGridView ou PropertyGrid dans .NET 4.0, vous devez donc utiliser System.ComponentModel.DisplayNameAttribute (et écrire votre propre classe dérivée si vous souhaitez prendre en charge la localisation). – MCattle

11

System.ComponentModel.DataAnnotations.DisplayAttribute est un meilleur choix que DisplayNameAttribute, qui est en fait destiné à être utilisé dans les réseaux de propriété. De nos jours, plus de composants dans le monde .NET reprendront et utiliseront DisplayAttribute. Il a également des finesses comme Order, GroupName, ShortName et si afficher la propriété du tout, lorsque la génération automatique est terminée (avec AutoGenerateField). Il est également facile à utiliser, ce qui en fait un bon choix pour la localisation.

DisplayAttribute

0

Placez l'attribut suivant avant chaque déclaration de propriété:

//[DisplayName("Your desired human readable field caption ")] 
    [DisplayName("ID")] 
    public int id { 
     get {return _id;} 
     set { SetField(ref _id, value, "id"); } 
    }