私の連絡先情報
郵便メール:
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 を使用する方が適切な場合があります。