CustomAttribute 構造体
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
カスタム属性に関する情報を提供します。
public value class CustomAttribute
public struct CustomAttribute
public readonly struct CustomAttribute
type CustomAttribute = struct
Public Structure CustomAttribute
- 継承
例
この例では、型定義に適用されたすべてのカスタム属性を出力する方法を示します。
class MyAttribute : Attribute
{
public int X { get; set; }
}
[My(X = 1)]
class ExampleType1 { }
[My(X = 2)]
class ExampleType2 { }
static void PrintCustomAttributes(MetadataReader mr, TypeDefinition t)
{
// Enumerate custom attributes on the type definition
foreach (CustomAttributeHandle attrHandle in t.GetCustomAttributes())
{
CustomAttribute attr = mr.GetCustomAttribute(attrHandle);
// Display the attribute type full name
if (attr.Constructor.Kind == HandleKind.MethodDefinition)
{
MethodDefinition mdef = mr.GetMethodDefinition((MethodDefinitionHandle)attr.Constructor);
TypeDefinition tdef = mr.GetTypeDefinition(mdef.GetDeclaringType());
Console.WriteLine($"Type: {mr.GetString(tdef.Namespace)}.{mr.GetString(tdef.Name)}");
}
else if (attr.Constructor.Kind == HandleKind.MemberReference)
{
MemberReference mref = mr.GetMemberReference((MemberReferenceHandle)attr.Constructor);
if (mref.Parent.Kind == HandleKind.TypeReference)
{
TypeReference tref = mr.GetTypeReference((TypeReferenceHandle)mref.Parent);
Console.WriteLine($"Type: {mr.GetString(tref.Namespace)}.{mr.GetString(tref.Name)}");
}
else if (mref.Parent.Kind == HandleKind.TypeDefinition)
{
TypeDefinition tdef = mr.GetTypeDefinition((TypeDefinitionHandle)mref.Parent);
Console.WriteLine($"Type: {mr.GetString(tdef.Namespace)}.{mr.GetString(tdef.Name)}");
}
}
// Display the attribute value
byte[] data = mr.GetBlobBytes(attr.Value);
Console.Write("Value: ");
for (int i = 0; i < data.Length; i++) Console.Write($"{data[i]:X2} ");
Console.WriteLine();
}
}
static void PrintTypesCustomAttributes(MetadataReader mr)
{
foreach (TypeDefinitionHandle tdh in mr.TypeDefinitions)
{
TypeDefinition t = mr.GetTypeDefinition(tdh);
Console.WriteLine($"{mr.GetString(t.Namespace)}.{mr.GetString(t.Name)}");
PrintCustomAttributes(mr, t);
}
}
注釈
カスタム属性は、アセンブリ、型、メソッドなどのメタデータ要素に追加情報を関連付ける注釈です。 メソッドを GetCustomAttribute(CustomAttributeHandle) 使用して、カスタム属性インスタンスを取得できます。 .NET の属性の詳細については、「属性を 使用してメタデータを拡張する」を参照してください。
プロパティ
Constructor |
カスタム属性型のコンストラクター (MethodDefinitionHandle または MemberReferenceHandle) を取得します。 |
Parent |
属性が適用されるメタデータ エンティティのハンドルを取得します。 |
Value |
属性の値を取得します。 |
メソッド
DecodeValue<TType>(ICustomAttributeTypeProvider<TType>) |
値 BLOB でエンコードされている引数をデコードします。 |
適用対象
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET