2010-08-26 15 views
10

Esiste una proprietà che consente di specificare un nome descrittivo per una proprietà in una classe?Esiste un attributo .NET per specificare il "nome visualizzato" di una proprietà?

Per esempio, dire che ho la seguente classe:

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

mi piacerebbe specificare che il nome visualizzato per la proprietà EmployeeName è "Nome dipendente" e il nome visualizzato per la proprietà EmployeeContactInfo è " Informazioni di contatto dei dipendenti ".

E 'abbastanza per scrivere la mia classe di attributo che mi permette di fare questo facile:

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

Ma è qualcosa di simile già inclusa nel .NET?

risposta

13
+11

come di .NET 4, v'è un attributo migliore per questo, System.ComponentModel.DataAnnotations.DisplayAttribute –

+5

A beneficio di altre persone alla ricerca di questo answer, System.ComponentModel.DataAnnotations.DisplayAttribute non è supportato dai controlli DataGridView o PropertyGrid di Windows Form in .NET 4.0, quindi si torna a utilizzare System.ComponentModel.DisplayNameAttribute (e si scrive la propria classe derivata se si desidera supportare la localizzazione). – MCattle

11

System.ComponentModel.DataAnnotations.DisplayAttribute è una scelta migliore di DisplayNameAttribute, che in realtà è destinato ad essere utilizzato in griglie di proprietà. Al giorno d'oggi più componenti nel mondo .NET si accorgeranno e useranno DisplayAttribute. Ha anche sottigliezze come Order, GroupName, ShortName e se visualizzare la proprietà del tutto, quando viene effettuata la generazione automatica (con AutoGenerateField).

DisplayAttribute è anche compatibile con le risorse, rendendolo una buona scelta per la localizzazione.

0

Inserire il seguente attributo prima di ogni dichiarazione di proprietà:

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