Есть ли атрибут .NET для указания "отображаемого имени" свойства?

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

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

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?

Ответ 2

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

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

Ответ 3

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

Ответ 4

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

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