Есть ли атрибут .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"); }
}