ホームページ > バックエンド開発 > C++ > C# で実行時にクラス属性を読み取るにはどうすればよいですか?

C# で実行時にクラス属性を読み取るにはどうすればよいですか?

Linda Hamilton
リリース: 2025-01-12 08:55:42
オリジナル
357 人が閲覧しました

How Can I Read Class Attributes at Runtime in C#?

C# でのクラス属性への動的アクセス

実行時にクラス属性にアクセスすることは、メタデータや構成情報を動的に取得するための強力な手法です。 これは、C# のリフレクション機能を使用して実現できます。

特定の属性 (DomainNameAttribute) の取得:

汎用メソッド GetDomainName<T> は、任意のクラスからの DomainNameAttribute の取得を簡素化します。

<code class="language-csharp">public string GetDomainName<T>()
{
    var dnAttribute = typeof(T).GetCustomAttributes(typeof(DomainNameAttribute), true)
                               .FirstOrDefault() as DomainNameAttribute;
    return dnAttribute?.Name;
}</code>
ログイン後にコピー

使用例:

<code class="language-csharp">// Returns "MyTable" (assuming myclass has the attribute)
string domainName = GetDomainName<myclass>();</code>
ログイン後にコピー

属性アクセスのためのより一般的なアプローチ:

より幅広い適用性を実現するために、より一般化された拡張メソッドにより、任意の属性タイプとその特定のプロパティを取得できます。

<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 attribute = type.GetCustomAttributes(typeof(TAttribute), true)
                            .FirstOrDefault() as TAttribute;
        return attribute != null ? valueSelector(attribute) : default(TValue);
    }
}</code>
ログイン後にコピー

使用例:

<code class="language-csharp">string name = typeof(MyClass).GetAttributeValue((DomainNameAttribute dna) => dna.Name);</code>
ログイン後にコピー

このメソッドは属性タイプとラムダ式を受け取り、属性インスタンスから必要なプロパティ値を選択します。 これにより、さまざまな属性プロパティに柔軟にアクセスできるようになります。

以上がC# で実行時にクラス属性を読み取るにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート