2010-08-26 14 views
10

¿Existe alguna propiedad que le permita especificar un nombre fácil de usar para una propiedad en una clase?¿Existe un atributo .NET para especificar el "nombre para mostrar" de una propiedad?

Por ejemplo, decir que tengo la clase siguiente:

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

me gustaría especificar que el nombre de visualización de la propiedad EmployeeName es "Nombre del empleado" y el nombre de visualización de la propiedad EmployeeContactInfo es " Información de contacto del empleado ".

Es suficiente para escribir mi propia clase de atributo que me permite hacer esto fácil:

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

Pero es algo como esto ya está incluido en .NET?

Respuesta

13
+11

como de .NET 4, hay una mejor atributo para esto, System.ComponentModel.DataAnnotations.DisplayAttribute –

+5

Para el beneficio de otras personas buscando este answer, System.ComponentModel.DataAnnotations.DisplayAttribute no es compatible con los controles Windows Forms DataGridView o PropertyGrid en .NET 4.0, por lo que vuelve a utilizar System.ComponentModel.DisplayNameAttribute (y escribe su propia clase derivada si desea admitir la localización) – MCattle

11

System.ComponentModel.DataAnnotations.DisplayAttribute es una mejor opción que DisplayNameAttribute, que en realidad está diseñado para su uso en las redes de propiedad. Hoy en día, más componentes en el mundo .NET retomarán y usarán DisplayAttribute. También tiene detalles como Order, GroupName, ShortName y si mostrar la propiedad en absoluto, cuando se realiza la generación automática (con AutoGenerateField).

DisplayAttribute es también fácil de usar, por lo que es una buena opción para la localización.

0

Coloque el siguiente atributo antes de cada declaración de propiedad:

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