オブジェクト指向プログラミングでは、属性はクラスに付加されたメタデータであり、コード自体を超えた追加情報を提供します。実行時にプロパティを動的に読み取る必要がある場合、その方法は次のとおりです。
ドメイン属性の例
DomainName
属性を含む次のコード スニペットを考えてみましょう:
<code class="language-csharp">[DomainName("MyTable")] public class MyClass : DomainBase { }</code>
属性読み取りの汎用メソッド
私たちの目標は、指定されたクラスの DomainName
プロパティを読み取り、その値を返すジェネリック メソッドを作成することです。
<code class="language-csharp">string GetDomainName<T>() { var dnAttribute = typeof(T).GetCustomAttributes( typeof(DomainNameAttribute), true ).FirstOrDefault() as DomainNameAttribute; if (dnAttribute != null) { return dnAttribute.Name; } return null; }</code>
<code class="language-csharp">string domainNameValue = GetDomainName<MyClass>(); // 返回 "MyTable"</code>
共通属性の読み取り
クラスを使用すると、プロパティ読み取り機能を一般化して、任意のプロパティ タイプで動作させることができます。
AttributeExtensions
<code class="language-csharp">public static class AttributeExtensions { public static TValue GetAttributeValue<TAttribute, TValue>( this Type type, Func<TAttribute, TValue> valueSelector) where TAttribute : Attribute { var att = type.GetCustomAttributes( typeof(TAttribute), true ).FirstOrDefault() as TAttribute; if (att != null) { return valueSelector(att); } return default(TValue); } }</code>
以上がC# でクラス属性を動的に取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。