моя контактная информация
Почтамезофия@protonmail.com
2024-07-08
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
В C# получение displayName свойства можно выполнить различными способами, включая использование атрибутов, отражения и LINQ. Ниже я покажу каждый метод отдельно и приведу конкретный пример кода.
При определении свойства вы можете использовать атрибут DisplayName, чтобы указать отображаемое имя свойства. Этот метод является самым простым и прямым и подходит для ситуаций, когда отображаемое имя необходимо указать при разработке атрибута.
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特性已经被附加到属性上
Примечание. В .NET Core атрибут DisplayName может быть устаревшим, и вам может потребоваться использовать DisplayAttribute.
Посредством отражения вы можете динамически получать пользовательские атрибуты атрибутов, включая 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;
}
Если у вас есть список свойств и вы хотите запросить свойства с определенным отображаемым именем, вы можете использовать LINQ, чтобы упростить процесс запроса.
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. Прямой доступ с использованием атрибутов: Самый простой способ — просто добавить к атрибуту атрибут DisplayName. Этот метод уже определяет отображаемое имя при определении атрибута и не требует дополнительных запросов во время выполнения.
2. Используйте метод GetCustomAttribute() для получения посредством отражения: Получите атрибут DisplayAttribute для атрибута посредством отражения. Этот метод динамически получает информацию об атрибутах во время выполнения, что более гибко, но затраты на производительность немного выше, чем при прямом доступе к функциям.
3. Используйте запрос LINQ: Запросите список свойств через LINQ, чтобы найти свойства с определенным отображаемым именем. Этот метод подходит для фильтрации при наличии большого количества атрибутов, но он может быть слишком сложным и не является лучшим выбором для простых сценариев.
Каждый метод имеет свои применимые сценарии. В реальной разработке наиболее подходящий метод должен выбираться на основе конкретных потребностей и соображений производительности. Если свойств немного, а отображаемое имя известно во время определения, использование атрибутов является самым простым и понятным подходом. Если вам необходимо динамически получать информацию об атрибутах или имеется множество атрибутов, возможно, более целесообразным будет использовать отражение или LINQ.