내 연락처 정보
우편메소피아@프로톤메일.com
2024-07-08
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
C#에서는 특성, 리플렉션, LINQ 사용을 비롯한 다양한 방법으로 속성의 displayName을 가져올 수 있습니다. 아래에서는 각 방법을 개별적으로 보여주고 구체적인 예제 코드를 제공하겠습니다.
속성을 정의할 때 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를 사용하는 것이 더 적합할 수 있습니다.