この記事では、クラスのプロパティ値に動的にアクセスして抽出するための一般的な方法を紹介します。
タイプパラメーターを受け入れる一般的な方法を定義します:
public string GetDomainName()
]]
メソッド内:
を使用します typeof(t).getCustomattributes
を取得してカスタム属性を取得します:
var dnAttribute = typeof(T).GetCustomAttributes(
typeof(DomainNameAttribute), true
).FirstOrDefault() as DomainNameAttribute;
プロパティが存在する場合、その値は返されます:
if (dnAttribute != null)
{
return dnAttribute.Name;
}
それ以外の場合、nullを返します:
return null;
]
幅広い適用性については、この方法を一般化して属性を処理します。
public static class AttributeExtensions
{
public static TValue GetAttributeValue(
this Type type,
Func valueSelector)
where TAttribute : Attribute
}
内部拡張法:
カスタムプロパティを取得:
var att = type.GetCustomAttributes(
typeof(TAttribute), true
).FirstOrDefault() as TAttribute;
属性が存在する場合、提供された ValuesElector
を使用して必要な値を抽出します:
if (att != null)
{
return valueSelector(att);
}
それ以外の場合は、このタイプのデフォルト値を返します:
return default(TValue);
]
domainname
属性の myclass
:string name = typeof(MyClass).GetDomainName();
myclass
の属性値を取得します:string name = typeof(MyClass)
.GetAttributeValue((DomainNameAttribute dna) => dna.Name);
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3