Есть ли атрибут .NET для указания «отображаемого имени» свойства? - PullRequest
11 голосов
/ 27 августа 2010

Существует ли свойство, позволяющее указать понятное имя для свойства в классе?

Например, скажем, у меня есть следующий класс:

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

Я бы хотел указать, что отображаемое имя для свойства EmployeeName - «Имя сотрудника», а отображаемое имя для свойства EmployeeContactInfo - «Контактная информация сотрудника».

Достаточно легко написать свой собственный класс атрибутов, который позволит мне сделать это:

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

Но что-то подобное уже включено в .NET?

Ответы [ 4 ]

13 голосов
/ 27 августа 2010
12 голосов
/ 27 августа 2010

System.ComponentModel.DataAnnotations.DisplayAttribute - лучший выбор, чем DisplayNameAttribute, который фактически предназначен для использования в таблицах свойств. В настоящее время все больше компонентов в мире .NET будут использовать и использовать DisplayAttribute. Он также имеет такие тонкости, как Order, GroupName, ShortName и необходимость отображать свойство вообще, когда автоматическое создание завершено (с AutoGenerateField).

DisplayAttribute также дружествен к ресурсам, что делает его хорошим выбором для локализации.

3 голосов
/ 27 августа 2010

Если вы хотите это для отладки, вас может заинтересовать DebuggerDisplayAttribute .

0 голосов
/ 09 апреля 2015

Поместите следующий атрибут перед каждым объявлением свойства:

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