minhas informações de contato
Correspondência[email protected]
2024-07-08
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Em C#, obter o displayName de uma propriedade pode ser realizado de diversas maneiras, inclusive usando atributos, reflexão e LINQ. Abaixo mostrarei cada método individualmente e fornecerei um exemplo de código específico.
Ao definir uma propriedade, você pode usar o atributo DisplayName para especificar o nome de exibição da propriedade. Este método é o mais simples e direto e é adequado para situações em que o nome de exibição precisa ser especificado quando o atributo é projetado.
using System;
using System.ComponentModel;
public class MyModel
{
[DisplayName("Full Name")]
public string Name { get; set; }
}
// 使用
MyModel model = new MyModel();
string displayName = model.Name.DisplayName; // 假设DisplayName特性已经被附加到属性上
Observação: no .NET Core, o atributo DisplayName pode ter sido preterido e talvez seja necessário usar DisplayAttribute.
Através da reflexão, você pode obter dinamicamente atributos personalizados em atributos, incluindo DisplayAttribute.
using System;
using System.ComponentModel;
using System.Reflection;
public class MyModel
{
[Display(Name = "Full Name")]
public string Name { get; set; }
}
// 使用
MyModel model = new MyModel();
string displayName = "";
PropertyInfo propertyInfo = model.GetType().GetProperty("Name");
DisplayAttribute displayAttribute = (DisplayAttribute)propertyInfo.GetCustomAttribute(typeof(DisplayAttribute), false);
if (displayAttribute != null)
{
displayName = displayAttribute.Name;
}
Se você tiver uma lista de propriedades e quiser consultar propriedades com um nome de exibição específico, poderá usar o LINQ para simplificar o processo de consulta.
using System;
using System.ComponentModel;
using System.Linq;
using System.Reflection;
public class MyModel
{
[Display(Name = "Full Name")]
public string Name { get; set; }
[Display(Name = "Date of Birth")]
public DateTime DateOfBirth { get; set; }
}
// 使用
MyModel model = new MyModel();
string displayName = "";
var attributes = from property in model.GetType().GetProperties()
let displayAttribute = Attribute.GetCustomAttribute(property, typeof(DisplayAttribute)) as DisplayAttribute
where displayAttribute != null
select displayAttribute;
foreach (var attribute in attributes)
{
if (attribute.Name == "Full Name")
{
displayName = attribute.Name;
break;
}
}
1. Acesso direto usando atributos: A maneira mais simples é apenas adicionar o atributo DisplayName ao atributo. Este método já determina o nome de exibição quando o atributo é definido e não requer consultas adicionais em tempo de execução.
2. Use o método GetCustomAttribute() para obter por meio de reflexão: Obtenha o atributo DisplayAttribute no atributo por meio de reflexão. Este método obtém informações de atributos dinamicamente em tempo de execução e é mais flexível, mas a sobrecarga de desempenho é um pouco maior do que acessar recursos diretamente.
3. Use a consulta LINQ: Consulte uma lista de propriedades via LINQ para encontrar propriedades com um nome de exibição específico. Este método é adequado para filtragem quando há um grande número de atributos, mas pode ser muito complexo e não é a melhor escolha para cenários simples.
Cada método tem seus cenários aplicáveis. No desenvolvimento real, o método mais apropriado deve ser selecionado com base nas necessidades específicas e nas considerações de desempenho. Se houver poucas propriedades e o nome de exibição for conhecido no momento da definição, o uso de atributos será a abordagem mais simples e direta. Se você precisar obter informações de atributos dinamicamente ou se houver muitos atributos, pode ser mais apropriado usar reflexão ou LINQ.