英語で読む

次の方法で共有


Attribute.GetCustomAttributes メソッド

定義

アセンブリ、モジュール、型メンバー、またはメソッド パラメーターに適用されるカスタム属性の配列を取得します。

オーバーロード

GetCustomAttributes(ParameterInfo, Boolean)

メソッド パラメーターに適用されるカスタム属性の配列を取得します。 パラメーターは、メソッド パラメーターと、メソッド パラメーターの先祖を検索するかどうかを指定します。

GetCustomAttributes(MemberInfo, Type, Boolean)

型のメンバーに適用されるカスタム属性の配列を取得します。 パラメーターは、メンバー、検索するカスタム属性の型、およびメンバーの先祖を検索するかどうかを指定します。

GetCustomAttributes(ParameterInfo, Type, Boolean)

メソッド パラメーターに適用されるカスタム属性の配列を取得します。 パラメーターでは、メソッド パラメーター、検索するカスタム属性の型、およびメソッド パラメーターの先祖を検索するかどうかを指定します。

GetCustomAttributes(Module, Type, Boolean)

モジュールに適用されるカスタム属性の配列を取得します。 パラメーターは、モジュール、検索するカスタム属性の型、および無視される検索オプションを指定します。

GetCustomAttributes(MemberInfo, Type)

型のメンバーに適用されるカスタム属性の配列を取得します。 パラメーターは、メンバーと、検索するカスタム属性の型を指定します。

GetCustomAttributes(Assembly, Type, Boolean)

アセンブリに適用されるカスタム属性の配列を取得します。 パラメーターは、アセンブリ、検索するカスタム属性の型、および無視される検索オプションを指定します。

GetCustomAttributes(Module, Type)

モジュールに適用されるカスタム属性の配列を取得します。 パラメーターは、モジュールと、検索するカスタム属性の型を指定します。

GetCustomAttributes(ParameterInfo, Type)

メソッド パラメーターに適用されるカスタム属性の配列を取得します。 パラメーターでは、メソッド パラメーターと、検索するカスタム属性の型を指定します。

GetCustomAttributes(MemberInfo, Boolean)

型のメンバーに適用されるカスタム属性の配列を取得します。 パラメーターは、メンバー、検索するカスタム属性の型、およびメンバーの先祖を検索するかどうかを指定します。

GetCustomAttributes(Assembly, Type)

アセンブリに適用されるカスタム属性の配列を取得します。 パラメーターは、アセンブリと、検索するカスタム属性の型を指定します。

GetCustomAttributes(Assembly, Boolean)

アセンブリに適用されるカスタム属性の配列を取得します。 パラメーターは、アセンブリと無視される検索オプションを指定します。

GetCustomAttributes(ParameterInfo)

メソッド パラメーターに適用されるカスタム属性の配列を取得します。 パラメーターはメソッド パラメーターを指定します。

GetCustomAttributes(Module)

モジュールに適用されるカスタム属性の配列を取得します。 パラメーターはモジュールを指定します。

GetCustomAttributes(MemberInfo)

型のメンバーに適用されるカスタム属性の配列を取得します。 パラメーターはメンバーを指定します。

GetCustomAttributes(Assembly)

アセンブリに適用されるカスタム属性の配列を取得します。 パラメーターはアセンブリを指定します。

GetCustomAttributes(Module, Boolean)

モジュールに適用されるカスタム属性の配列を取得します。 パラメーターは、モジュールと無視される検索オプションを指定します。

GetCustomAttributes(ParameterInfo, Boolean)

ソース:
Attribute.CoreCLR.cs
ソース:
Attribute.CoreCLR.cs
ソース:
Attribute.CoreCLR.cs

メソッド パラメーターに適用されるカスタム属性の配列を取得します。 パラメーターは、メソッド パラメーターと、メソッド パラメーターの先祖を検索するかどうかを指定します。

C#
public static Attribute[] GetCustomAttributes (System.Reflection.ParameterInfo element, bool inherit);

パラメーター

element
ParameterInfo

クラスのメンバーのパラメーターを記述する ParameterInfo クラスから派生したオブジェクト。

inherit
Boolean

true場合は、カスタム属性の element の先祖も検索するように指定します。

戻り値

elementに適用されるカスタム属性を含む Attribute 配列。そのようなカスタム属性が存在しない場合は空の配列。

例外

elementMember プロパティは nullです。

elementnullです。

カスタム属性の型を読み込むことができません。

次のコード例は、パラメーターとして ParameterInfo を受け取る GetCustomAttributesの使用を示しています。

C#
using System;
using System.Reflection;
using System.ComponentModel;

namespace CustAttrs5CS {
    public class AClass {
        public void ParamArrayAndDesc(
            // Add ParamArray (with the keyword) and Description attributes.
            [Description("This argument is a ParamArray")]
            params int[] args)
        {}
    }

    class DemoClass {
        static void Main(string[] args) {
            // Get the Class type to access its metadata.
            Type clsType = typeof(AClass);
            // Get the type information for the method.
            MethodInfo mInfo = clsType.GetMethod("ParamArrayAndDesc");
            if (mInfo != null) {
                // Get the parameter information.
                ParameterInfo[] pInfo = mInfo.GetParameters();
                if (pInfo != null) {
                    // Iterate through all the attributes for the parameter.
                    foreach(Attribute attr in
                        Attribute.GetCustomAttributes(pInfo[0])) {
                        // Check for the ParamArray attribute.
                        if (attr.GetType() == typeof(ParamArrayAttribute))
                            Console.WriteLine("Parameter {0} for method {1} " +
                                "has the ParamArray attribute.",
                                pInfo[0].Name, mInfo.Name);
                        // Check for the Description attribute.
                        else if (attr.GetType() ==
                            typeof(DescriptionAttribute)) {
                            Console.WriteLine("Parameter {0} for method {1} " +
                                "has a description attribute.",
                                pInfo[0].Name, mInfo.Name);
                            Console.WriteLine("The description is: \"{0}\"",
                                ((DescriptionAttribute)attr).Description);
                        }
                    }
                }
            }
        }
    }
}

/*
 * Output:
 * Parameter args for method ParamArrayAndDesc has the ParamArray attribute.
 * Parameter args for method ParamArrayAndDesc has a description attribute.
 * The description is: "This argument is a ParamArray"
 */

注釈

element 派生型のメソッド内のパラメーターを表す場合、戻り値には、オーバーライドされた基本メソッドの同じパラメーターに適用される継承可能なカスタム属性が含まれます。

適用対象

.NET 9 およびその他のバージョン
製品 バージョン
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

GetCustomAttributes(MemberInfo, Type, Boolean)

ソース:
Attribute.CoreCLR.cs
ソース:
Attribute.CoreCLR.cs
ソース:
Attribute.CoreCLR.cs

型のメンバーに適用されるカスタム属性の配列を取得します。 パラメーターは、メンバー、検索するカスタム属性の型、およびメンバーの先祖を検索するかどうかを指定します。

C#
public static Attribute[] GetCustomAttributes (System.Reflection.MemberInfo element, Type type, bool inherit);
C#
public static Attribute[] GetCustomAttributes (System.Reflection.MemberInfo element, Type attributeType, bool inherit);

パラメーター

element
MemberInfo

クラスのコンストラクター、イベント、フィールド、メソッド、またはプロパティ メンバーを記述する MemberInfo クラスから派生したオブジェクト。

typeattributeType
Type

検索するカスタム属性の型 (基本型)。

inherit
Boolean

true場合は、カスタム属性の element の先祖も検索するように指定します。

戻り値

elementに適用 type 型のカスタム属性を含む Attribute 配列、またはそのようなカスタム属性が存在しない場合は空の配列。

例外

element または typenull

typeAttributeから派生していません。

element は、コンストラクター、メソッド、プロパティ、イベント、型、またはフィールドではありません。

カスタム属性の型を読み込むことができません。

次のコード例は、パラメーターとして MemberInfo を受け取る GetCustomAttributesの使用を示しています。

C#
using System;
using System.Reflection;
using System.Security;
using System.Runtime.InteropServices;

namespace CustAttrs4CS
{

    // Define an enumeration of Win32 unmanaged types
    public enum UnmanagedType
    {
        User,
        GDI,
        Kernel,
        Shell,
        Networking,
        Multimedia
    }

    // Define the Unmanaged attribute.
    public class UnmanagedAttribute : Attribute
    {
        // Storage for the UnmanagedType value.
        protected UnmanagedType thisType;

        // Set the unmanaged type in the constructor.
        public UnmanagedAttribute(UnmanagedType type)
        {
            thisType = type;
        }

        // Define a property to get and set the UnmanagedType value.
        public UnmanagedType Win32Type
        {
            get { return thisType; }
            set { thisType = Win32Type; }
        }
    }

    // Create a class for an imported Win32 unmanaged function.
    public class Win32 {
        [DllImport("user32.dll", CharSet = CharSet.Unicode)]
        public static extern int MessageBox(int hWnd, String text,
            String caption, uint type);
    }

    public class AClass {
        // Add some attributes to Win32CallMethod.
        [Obsolete("This method is obsolete. Use managed MsgBox instead.")]
        [Unmanaged(UnmanagedType.User)]
        public void Win32CallMethod()
        {
            Win32.MessageBox(0, "This is an unmanaged call.", "Caution!", 0);
        }
    }

    class DemoClass {
        static void Main(string[] args)
            {
            // Get the AClass type to access its metadata.
            Type clsType = typeof(AClass);
            // Get the type information for Win32CallMethod.
            MethodInfo mInfo = clsType.GetMethod("Win32CallMethod");
            if (mInfo != null)
            {
                // Iterate through all the attributes of the method.
                foreach(Attribute attr in
                    Attribute.GetCustomAttributes(mInfo)) {
                    // Check for the Obsolete attribute.
                    if (attr.GetType() == typeof(ObsoleteAttribute))
                    {
                        Console.WriteLine("Method {0} is obsolete. " +
                            "The message is:",
                            mInfo.Name);
                        Console.WriteLine("  \"{0}\"",
                            ((ObsoleteAttribute)attr).Message);
                    }

                    // Check for the Unmanaged attribute.
                    else if (attr.GetType() == typeof(UnmanagedAttribute))
                    {
                        Console.WriteLine(
                            "This method calls unmanaged code.");
                        Console.WriteLine(
                            String.Format("The Unmanaged attribute type is {0}.",
                                          ((UnmanagedAttribute)attr).Win32Type));
                        AClass myCls = new AClass();
                        myCls.Win32CallMethod();
                    }
                }
            }
        }
    }
}

/*

This code example produces the following results.

First, the compilation yields the warning, "... This method is
obsolete. Use managed MsgBox instead."
Second, execution yields a message box with a title of "Caution!"
and message text of "This is an unmanaged call."
Third, the following text is displayed in the console window:

Method Win32CallMethod is obsolete. The message is:
  "This method is obsolete. Use managed MsgBox instead."
This method calls unmanaged code.
The Unmanaged attribute type is User.

*/

注釈

戻り値には、inherittrueされている場合、element の先祖のカスタム属性が含まれます。

注意

.NET Framework バージョン 2.0 以降では、属性が新しいメタデータ形式で格納されている場合、このメソッドはメソッド、コンストラクター、および型のセキュリティ属性を返します。 バージョン 2.0 以降でコンパイルされたアセンブリでは、新しい形式が使用されます。 以前のバージョンの .NET Framework でコンパイルされた動的アセンブリとアセンブリでは、古い XML 形式が使用されます。 宣言型セキュリティ属性の出力 を参照してください。

適用対象

.NET 9 およびその他のバージョン
製品 バージョン
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

GetCustomAttributes(ParameterInfo, Type, Boolean)

ソース:
Attribute.CoreCLR.cs
ソース:
Attribute.CoreCLR.cs
ソース:
Attribute.CoreCLR.cs

メソッド パラメーターに適用されるカスタム属性の配列を取得します。 パラメーターでは、メソッド パラメーター、検索するカスタム属性の型、およびメソッド パラメーターの先祖を検索するかどうかを指定します。

C#
public static Attribute[] GetCustomAttributes (System.Reflection.ParameterInfo element, Type attributeType, bool inherit);

パラメーター

element
ParameterInfo

クラスのメンバーのパラメーターを記述する ParameterInfo クラスから派生したオブジェクト。

attributeType
Type

検索するカスタム属性の型 (基本型)。

inherit
Boolean

true場合は、カスタム属性の element の先祖も検索するように指定します。

戻り値

elementに適用 attributeType 型のカスタム属性を含む Attribute 配列、またはそのようなカスタム属性が存在しない場合は空の配列。

例外

element または attributeTypenull

attributeTypeAttributeから派生していません。

カスタム属性の型を読み込むことができません。

次のコード例は、パラメーターとして ParameterInfo を受け取る GetCustomAttributesの使用を示しています。

C#
using System;
using System.Reflection;
using System.ComponentModel;

namespace CustAttrs5CS {
    public class AClass {
        public void ParamArrayAndDesc(
            // Add ParamArray (with the keyword) and Description attributes.
            [Description("This argument is a ParamArray")]
            params int[] args)
        {}
    }

    class DemoClass {
        static void Main(string[] args) {
            // Get the Class type to access its metadata.
            Type clsType = typeof(AClass);
            // Get the type information for the method.
            MethodInfo mInfo = clsType.GetMethod("ParamArrayAndDesc");
            if (mInfo != null) {
                // Get the parameter information.
                ParameterInfo[] pInfo = mInfo.GetParameters();
                if (pInfo != null) {
                    // Iterate through all the attributes for the parameter.
                    foreach(Attribute attr in
                        Attribute.GetCustomAttributes(pInfo[0])) {
                        // Check for the ParamArray attribute.
                        if (attr.GetType() == typeof(ParamArrayAttribute))
                            Console.WriteLine("Parameter {0} for method {1} " +
                                "has the ParamArray attribute.",
                                pInfo[0].Name, mInfo.Name);
                        // Check for the Description attribute.
                        else if (attr.GetType() ==
                            typeof(DescriptionAttribute)) {
                            Console.WriteLine("Parameter {0} for method {1} " +
                                "has a description attribute.",
                                pInfo[0].Name, mInfo.Name);
                            Console.WriteLine("The description is: \"{0}\"",
                                ((DescriptionAttribute)attr).Description);
                        }
                    }
                }
            }
        }
    }
}

/*
 * Output:
 * Parameter args for method ParamArrayAndDesc has the ParamArray attribute.
 * Parameter args for method ParamArrayAndDesc has a description attribute.
 * The description is: "This argument is a ParamArray"
 */

注釈

element 派生型のメソッド内のパラメーターを表す場合、戻り値には、オーバーライドされた基本メソッドの同じパラメーターに適用される継承可能なカスタム属性が含まれます。

適用対象

.NET 9 およびその他のバージョン
製品 バージョン
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

GetCustomAttributes(Module, Type, Boolean)

ソース:
Attribute.CoreCLR.cs
ソース:
Attribute.CoreCLR.cs
ソース:
Attribute.CoreCLR.cs

モジュールに適用されるカスタム属性の配列を取得します。 パラメーターは、モジュール、検索するカスタム属性の型、および無視される検索オプションを指定します。

C#
public static Attribute[] GetCustomAttributes (System.Reflection.Module element, Type attributeType, bool inherit);

パラメーター

element
Module

移植可能な実行可能ファイルを記述する Module クラスから派生したオブジェクト。

attributeType
Type

検索するカスタム属性の型 (基本型)。

inherit
Boolean

このパラメーターは無視され、このメソッドの操作には影響しません。

戻り値

elementに適用 attributeType 型のカスタム属性を含む Attribute 配列、またはそのようなカスタム属性が存在しない場合は空の配列。

例外

element または attributeTypenull

attributeTypeAttributeから派生していません。

次のコード例は、パラメーターとして Module を受け取る GetCustomAttributesの使用を示しています。

C#
using System;
using System.Reflection;
using System.ComponentModel;

// Assign some attributes to the module.
[module:Description("A sample description")]

// Set the module's CLSCompliant attribute to false
// The CLSCompliant attribute is applicable for /target:module.
[module:CLSCompliant(false)]

namespace CustAttrs2CS {
    class DemoClass {
        static void Main(string[] args) {
            Type clsType = typeof(DemoClass);
            // Get the Module type to access its metadata.
            Module module = clsType.Module;

            // Iterate through all the attributes for the module.
            foreach(Attribute attr in Attribute.GetCustomAttributes(module)) {
                // Check for the Description attribute.
                if (attr.GetType() == typeof(DescriptionAttribute))
                    Console.WriteLine("Module {0} has the description " +
                        "\"{1}\".", module.Name,
                        ((DescriptionAttribute)attr).Description);
                // Check for the CLSCompliant attribute.
                else if (attr.GetType() == typeof(CLSCompliantAttribute))
                    Console.WriteLine("Module {0} {1} CLSCompliant.",
                        module.Name,
                        ((CLSCompliantAttribute)attr).IsCompliant ?
                            "is" : "is not");
            }
        }
    }
}

/*
 * Output:
 * Module CustAttrs2CS.exe is not CLSCompliant.
 * Module CustAttrs2CS.exe has the description "A sample description".
 */

注釈

戻り値には、inherittrueされている場合、element の先祖のカスタム属性が含まれます。

適用対象

.NET 9 およびその他のバージョン
製品 バージョン
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

GetCustomAttributes(MemberInfo, Type)

ソース:
Attribute.CoreCLR.cs
ソース:
Attribute.CoreCLR.cs
ソース:
Attribute.CoreCLR.cs

型のメンバーに適用されるカスタム属性の配列を取得します。 パラメーターは、メンバーと、検索するカスタム属性の型を指定します。

C#
public static Attribute[] GetCustomAttributes (System.Reflection.MemberInfo element, Type type);
C#
public static Attribute[] GetCustomAttributes (System.Reflection.MemberInfo element, Type attributeType);

パラメーター

element
MemberInfo

クラスのコンストラクター、イベント、フィールド、メソッド、またはプロパティ メンバーを記述する MemberInfo クラスから派生したオブジェクト。

typeattributeType
Type

検索するカスタム属性の型 (基本型)。

戻り値

elementに適用 type 型のカスタム属性を含む Attribute 配列、またはそのようなカスタム属性が存在しない場合は空の配列。

例外

element または typenull

typeAttributeから派生していません。

element は、コンストラクター、メソッド、プロパティ、イベント、型、またはフィールドではありません。

カスタム属性の型を読み込むことができません。

次のコード例は、パラメーターとして MemberInfo を受け取る GetCustomAttributeの使用を示しています。

C#
using System;
using System.Reflection;
using System.Security;
using System.Runtime.InteropServices;

namespace CustAttrs4CS
{

    // Define an enumeration of Win32 unmanaged types
    public enum UnmanagedType
    {
        User,
        GDI,
        Kernel,
        Shell,
        Networking,
        Multimedia
    }

    // Define the Unmanaged attribute.
    public class UnmanagedAttribute : Attribute
    {
        // Storage for the UnmanagedType value.
        protected UnmanagedType thisType;

        // Set the unmanaged type in the constructor.
        public UnmanagedAttribute(UnmanagedType type)
        {
            thisType = type;
        }

        // Define a property to get and set the UnmanagedType value.
        public UnmanagedType Win32Type
        {
            get { return thisType; }
            set { thisType = Win32Type; }
        }
    }

    // Create a class for an imported Win32 unmanaged function.
    public class Win32 {
        [DllImport("user32.dll", CharSet = CharSet.Unicode)]
        public static extern int MessageBox(int hWnd, String text,
            String caption, uint type);
    }

    public class AClass {
        // Add some attributes to Win32CallMethod.
        [Obsolete("This method is obsolete. Use managed MsgBox instead.")]
        [Unmanaged(UnmanagedType.User)]
        public void Win32CallMethod()
        {
            Win32.MessageBox(0, "This is an unmanaged call.", "Caution!", 0);
        }
    }

    class DemoClass {
        static void Main(string[] args)
            {
            // Get the AClass type to access its metadata.
            Type clsType = typeof(AClass);
            // Get the type information for Win32CallMethod.
            MethodInfo mInfo = clsType.GetMethod("Win32CallMethod");
            if (mInfo != null)
            {
                // Iterate through all the attributes of the method.
                foreach(Attribute attr in
                    Attribute.GetCustomAttributes(mInfo)) {
                    // Check for the Obsolete attribute.
                    if (attr.GetType() == typeof(ObsoleteAttribute))
                    {
                        Console.WriteLine("Method {0} is obsolete. " +
                            "The message is:",
                            mInfo.Name);
                        Console.WriteLine("  \"{0}\"",
                            ((ObsoleteAttribute)attr).Message);
                    }

                    // Check for the Unmanaged attribute.
                    else if (attr.GetType() == typeof(UnmanagedAttribute))
                    {
                        Console.WriteLine(
                            "This method calls unmanaged code.");
                        Console.WriteLine(
                            String.Format("The Unmanaged attribute type is {0}.",
                                          ((UnmanagedAttribute)attr).Win32Type));
                        AClass myCls = new AClass();
                        myCls.Win32CallMethod();
                    }
                }
            }
        }
    }
}

/*

This code example produces the following results.

First, the compilation yields the warning, "... This method is
obsolete. Use managed MsgBox instead."
Second, execution yields a message box with a title of "Caution!"
and message text of "This is an unmanaged call."
Third, the following text is displayed in the console window:

Method Win32CallMethod is obsolete. The message is:
  "This method is obsolete. Use managed MsgBox instead."
This method calls unmanaged code.
The Unmanaged attribute type is User.

*/

注釈

戻り値には、elementの先祖のカスタム属性が含まれます。

注意

.NET Framework バージョン 2.0 以降では、属性が新しいメタデータ形式で格納されている場合、このメソッドはメソッド、コンストラクター、および型のセキュリティ属性を返します。 バージョン 2.0 以降でコンパイルされたアセンブリでは、新しい形式が使用されます。 以前のバージョンの .NET Framework でコンパイルされた動的アセンブリとアセンブリでは、古い XML 形式が使用されます。 宣言型セキュリティ属性の出力 を参照してください。

適用対象

.NET 9 およびその他のバージョン
製品 バージョン
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

GetCustomAttributes(Assembly, Type, Boolean)

ソース:
Attribute.CoreCLR.cs
ソース:
Attribute.CoreCLR.cs
ソース:
Attribute.CoreCLR.cs

アセンブリに適用されるカスタム属性の配列を取得します。 パラメーターは、アセンブリ、検索するカスタム属性の型、および無視される検索オプションを指定します。

C#
public static Attribute[] GetCustomAttributes (System.Reflection.Assembly element, Type attributeType, bool inherit);

パラメーター

element
Assembly

モジュールの再利用可能なコレクションを記述する Assembly クラスから派生したオブジェクト。

attributeType
Type

検索するカスタム属性の型 (基本型)。

inherit
Boolean

このパラメーターは無視され、このメソッドの操作には影響しません。

戻り値

elementに適用 attributeType 型のカスタム属性を含む Attribute 配列、またはそのようなカスタム属性が存在しない場合は空の配列。

例外

element または attributeTypenull

attributeTypeAttributeから派生していません。

次のコード例は、パラメーターとして Assembly を受け取る GetCustomAttributesの使用を示しています。

C#
using System;
using System.Reflection;

[assembly: AssemblyTitle("CustAttrs1CS")]
[assembly: AssemblyDescription("GetCustomAttributes() Demo")]
[assembly: AssemblyCompany("Microsoft")]

class Example {
    static void Main() {
        // Get the Assembly object to access its metadata.
        Assembly assy = typeof(Example).Assembly;

        // Iterate through the attributes for the assembly.
        foreach(Attribute attr in Attribute.GetCustomAttributes(assy)) {
            // Check for the AssemblyTitle attribute.
            if (attr.GetType() == typeof(AssemblyTitleAttribute))
                Console.WriteLine("Assembly title is \"{0}\".",
                    ((AssemblyTitleAttribute)attr).Title);

            // Check for the AssemblyDescription attribute.
            else if (attr.GetType() ==
                typeof(AssemblyDescriptionAttribute))
                Console.WriteLine("Assembly description is \"{0}\".",
                    ((AssemblyDescriptionAttribute)attr).Description);

            // Check for the AssemblyCompany attribute.
            else if (attr.GetType() == typeof(AssemblyCompanyAttribute))
                Console.WriteLine("Assembly company is {0}.",
                    ((AssemblyCompanyAttribute)attr).Company);
        }
   }
}
// The example displays the following output:
//     Assembly title is "CustAttrs1CS".
//     Assembly description is "GetCustomAttributes() Demo".
//     Assembly company is Microsoft.

注釈

注意

.NET Framework バージョン 2.0 以降では、属性が新しいメタデータ形式で格納されている場合、このメソッドはセキュリティ属性を返します。 バージョン 2.0 以降でコンパイルされたアセンブリでは、新しい形式が使用されます。 以前のバージョンの .NET Framework でコンパイルされた動的アセンブリとアセンブリでは、古い XML 形式が使用されます。 宣言型セキュリティ属性の出力 を参照してください。

適用対象

.NET 9 およびその他のバージョン
製品 バージョン
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

GetCustomAttributes(Module, Type)

ソース:
Attribute.CoreCLR.cs
ソース:
Attribute.CoreCLR.cs
ソース:
Attribute.CoreCLR.cs

モジュールに適用されるカスタム属性の配列を取得します。 パラメーターは、モジュールと、検索するカスタム属性の型を指定します。

C#
public static Attribute[] GetCustomAttributes (System.Reflection.Module element, Type attributeType);

パラメーター

element
Module

移植可能な実行可能ファイルを記述する Module クラスから派生したオブジェクト。

attributeType
Type

検索するカスタム属性の型 (基本型)。

戻り値

elementに適用 attributeType 型のカスタム属性を含む Attribute 配列、またはそのようなカスタム属性が存在しない場合は空の配列。

例外

element または attributeTypenull

attributeTypeAttributeから派生していません。

次のコード例は、パラメーターとして Module を受け取る GetCustomAttributesの使用を示しています。

C#
using System;
using System.Reflection;
using System.ComponentModel;

// Assign some attributes to the module.
[module:Description("A sample description")]

// Set the module's CLSCompliant attribute to false
// The CLSCompliant attribute is applicable for /target:module.
[module:CLSCompliant(false)]

namespace CustAttrs2CS {
    class DemoClass {
        static void Main(string[] args) {
            Type clsType = typeof(DemoClass);
            // Get the Module type to access its metadata.
            Module module = clsType.Module;

            // Iterate through all the attributes for the module.
            foreach(Attribute attr in Attribute.GetCustomAttributes(module)) {
                // Check for the Description attribute.
                if (attr.GetType() == typeof(DescriptionAttribute))
                    Console.WriteLine("Module {0} has the description " +
                        "\"{1}\".", module.Name,
                        ((DescriptionAttribute)attr).Description);
                // Check for the CLSCompliant attribute.
                else if (attr.GetType() == typeof(CLSCompliantAttribute))
                    Console.WriteLine("Module {0} {1} CLSCompliant.",
                        module.Name,
                        ((CLSCompliantAttribute)attr).IsCompliant ?
                            "is" : "is not");
            }
        }
    }
}

/*
 * Output:
 * Module CustAttrs2CS.exe is not CLSCompliant.
 * Module CustAttrs2CS.exe has the description "A sample description".
 */

適用対象

.NET 9 およびその他のバージョン
製品 バージョン
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

GetCustomAttributes(ParameterInfo, Type)

ソース:
Attribute.CoreCLR.cs
ソース:
Attribute.CoreCLR.cs
ソース:
Attribute.CoreCLR.cs

メソッド パラメーターに適用されるカスタム属性の配列を取得します。 パラメーターでは、メソッド パラメーターと、検索するカスタム属性の型を指定します。

C#
public static Attribute[] GetCustomAttributes (System.Reflection.ParameterInfo element, Type attributeType);

パラメーター

element
ParameterInfo

クラスのメンバーのパラメーターを記述する ParameterInfo クラスから派生したオブジェクト。

attributeType
Type

検索するカスタム属性の型 (基本型)。

戻り値

elementに適用 attributeType 型のカスタム属性を含む Attribute 配列、またはそのようなカスタム属性が存在しない場合は空の配列。

例外

element または attributeTypenull

attributeTypeAttributeから派生していません。

カスタム属性の型を読み込むことができません。

次のコード例は、パラメーターとして ParameterInfo を受け取る GetCustomAttributesの使用を示しています。

C#
using System;
using System.Reflection;
using System.ComponentModel;

namespace CustAttrs5CS {
    public class AClass {
        public void ParamArrayAndDesc(
            // Add ParamArray (with the keyword) and Description attributes.
            [Description("This argument is a ParamArray")]
            params int[] args)
        {}
    }

    class DemoClass {
        static void Main(string[] args) {
            // Get the Class type to access its metadata.
            Type clsType = typeof(AClass);
            // Get the type information for the method.
            MethodInfo mInfo = clsType.GetMethod("ParamArrayAndDesc");
            if (mInfo != null) {
                // Get the parameter information.
                ParameterInfo[] pInfo = mInfo.GetParameters();
                if (pInfo != null) {
                    // Iterate through all the attributes for the parameter.
                    foreach(Attribute attr in
                        Attribute.GetCustomAttributes(pInfo[0])) {
                        // Check for the ParamArray attribute.
                        if (attr.GetType() == typeof(ParamArrayAttribute))
                            Console.WriteLine("Parameter {0} for method {1} " +
                                "has the ParamArray attribute.",
                                pInfo[0].Name, mInfo.Name);
                        // Check for the Description attribute.
                        else if (attr.GetType() ==
                            typeof(DescriptionAttribute)) {
                            Console.WriteLine("Parameter {0} for method {1} " +
                                "has a description attribute.",
                                pInfo[0].Name, mInfo.Name);
                            Console.WriteLine("The description is: \"{0}\"",
                                ((DescriptionAttribute)attr).Description);
                        }
                    }
                }
            }
        }
    }
}

/*
 * Output:
 * Parameter args for method ParamArrayAndDesc has the ParamArray attribute.
 * Parameter args for method ParamArrayAndDesc has a description attribute.
 * The description is: "This argument is a ParamArray"
 */

注釈

element 派生型のメソッド内のパラメーターを表す場合、戻り値には、オーバーライドされた基本メソッドの同じパラメーターに適用される継承可能なカスタム属性が含まれます。

適用対象

.NET 9 およびその他のバージョン
製品 バージョン
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

GetCustomAttributes(MemberInfo, Boolean)

ソース:
Attribute.CoreCLR.cs
ソース:
Attribute.CoreCLR.cs
ソース:
Attribute.CoreCLR.cs

型のメンバーに適用されるカスタム属性の配列を取得します。 パラメーターは、メンバー、検索するカスタム属性の型、およびメンバーの先祖を検索するかどうかを指定します。

C#
public static Attribute[] GetCustomAttributes (System.Reflection.MemberInfo element, bool inherit);

パラメーター

element
MemberInfo

クラスのコンストラクター、イベント、フィールド、メソッド、またはプロパティ メンバーを記述する MemberInfo クラスから派生したオブジェクト。

inherit
Boolean

true場合は、カスタム属性の element の先祖も検索するように指定します。

戻り値

elementに適用されるカスタム属性を含む Attribute 配列。そのようなカスタム属性が存在しない場合は空の配列。

例外

elementnullです。

element は、コンストラクター、メソッド、プロパティ、イベント、型、またはフィールドではありません。

カスタム属性の型を読み込むことができません。

次のコード例は、パラメーターとして MemberInfo を受け取る GetCustomAttributesの使用を示しています。

C#
using System;
using System.Reflection;
using System.Security;
using System.Runtime.InteropServices;

namespace CustAttrs4CS
{

    // Define an enumeration of Win32 unmanaged types
    public enum UnmanagedType
    {
        User,
        GDI,
        Kernel,
        Shell,
        Networking,
        Multimedia
    }

    // Define the Unmanaged attribute.
    public class UnmanagedAttribute : Attribute
    {
        // Storage for the UnmanagedType value.
        protected UnmanagedType thisType;

        // Set the unmanaged type in the constructor.
        public UnmanagedAttribute(UnmanagedType type)
        {
            thisType = type;
        }

        // Define a property to get and set the UnmanagedType value.
        public UnmanagedType Win32Type
        {
            get { return thisType; }
            set { thisType = Win32Type; }
        }
    }

    // Create a class for an imported Win32 unmanaged function.
    public class Win32 {
        [DllImport("user32.dll", CharSet = CharSet.Unicode)]
        public static extern int MessageBox(int hWnd, String text,
            String caption, uint type);
    }

    public class AClass {
        // Add some attributes to Win32CallMethod.
        [Obsolete("This method is obsolete. Use managed MsgBox instead.")]
        [Unmanaged(UnmanagedType.User)]
        public void Win32CallMethod()
        {
            Win32.MessageBox(0, "This is an unmanaged call.", "Caution!", 0);
        }
    }

    class DemoClass {
        static void Main(string[] args)
            {
            // Get the AClass type to access its metadata.
            Type clsType = typeof(AClass);
            // Get the type information for Win32CallMethod.
            MethodInfo mInfo = clsType.GetMethod("Win32CallMethod");
            if (mInfo != null)
            {
                // Iterate through all the attributes of the method.
                foreach(Attribute attr in
                    Attribute.GetCustomAttributes(mInfo)) {
                    // Check for the Obsolete attribute.
                    if (attr.GetType() == typeof(ObsoleteAttribute))
                    {
                        Console.WriteLine("Method {0} is obsolete. " +
                            "The message is:",
                            mInfo.Name);
                        Console.WriteLine("  \"{0}\"",
                            ((ObsoleteAttribute)attr).Message);
                    }

                    // Check for the Unmanaged attribute.
                    else if (attr.GetType() == typeof(UnmanagedAttribute))
                    {
                        Console.WriteLine(
                            "This method calls unmanaged code.");
                        Console.WriteLine(
                            String.Format("The Unmanaged attribute type is {0}.",
                                          ((UnmanagedAttribute)attr).Win32Type));
                        AClass myCls = new AClass();
                        myCls.Win32CallMethod();
                    }
                }
            }
        }
    }
}

/*

This code example produces the following results.

First, the compilation yields the warning, "... This method is
obsolete. Use managed MsgBox instead."
Second, execution yields a message box with a title of "Caution!"
and message text of "This is an unmanaged call."
Third, the following text is displayed in the console window:

Method Win32CallMethod is obsolete. The message is:
  "This method is obsolete. Use managed MsgBox instead."
This method calls unmanaged code.
The Unmanaged attribute type is User.

*/

注釈

戻り値には、inherittrueされている場合、element の先祖のカスタム属性が含まれます。

注意

.NET Framework バージョン 2.0 以降では、属性が新しいメタデータ形式で格納されている場合、このメソッドはメソッド、コンストラクター、および型のセキュリティ属性を返します。 バージョン 2.0 以降でコンパイルされたアセンブリでは、新しい形式が使用されます。 以前のバージョンの .NET Framework でコンパイルされた動的アセンブリとアセンブリでは、古い XML 形式が使用されます。 宣言型セキュリティ属性の出力 を参照してください。

適用対象

.NET 9 およびその他のバージョン
製品 バージョン
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

GetCustomAttributes(Assembly, Type)

ソース:
Attribute.CoreCLR.cs
ソース:
Attribute.CoreCLR.cs
ソース:
Attribute.CoreCLR.cs

アセンブリに適用されるカスタム属性の配列を取得します。 パラメーターは、アセンブリと、検索するカスタム属性の型を指定します。

C#
public static Attribute[] GetCustomAttributes (System.Reflection.Assembly element, Type attributeType);

パラメーター

element
Assembly

モジュールの再利用可能なコレクションを記述する Assembly クラスから派生したオブジェクト。

attributeType
Type

検索するカスタム属性の型 (基本型)。

戻り値

elementに適用 attributeType 型のカスタム属性を含む Attribute 配列、またはそのようなカスタム属性が存在しない場合は空の配列。

例外

element または attributeTypenull

attributeTypeAttributeから派生していません。

次のコード例は、パラメーターとして Assembly を受け取る GetCustomAttributesの使用を示しています。

C#
using System;
using System.Reflection;

[assembly: AssemblyTitle("CustAttrs1CS")]
[assembly: AssemblyDescription("GetCustomAttributes() Demo")]
[assembly: AssemblyCompany("Microsoft")]

class Example {
    static void Main() {
        // Get the Assembly object to access its metadata.
        Assembly assy = typeof(Example).Assembly;

        // Iterate through the attributes for the assembly.
        foreach(Attribute attr in Attribute.GetCustomAttributes(assy)) {
            // Check for the AssemblyTitle attribute.
            if (attr.GetType() == typeof(AssemblyTitleAttribute))
                Console.WriteLine("Assembly title is \"{0}\".",
                    ((AssemblyTitleAttribute)attr).Title);

            // Check for the AssemblyDescription attribute.
            else if (attr.GetType() ==
                typeof(AssemblyDescriptionAttribute))
                Console.WriteLine("Assembly description is \"{0}\".",
                    ((AssemblyDescriptionAttribute)attr).Description);

            // Check for the AssemblyCompany attribute.
            else if (attr.GetType() == typeof(AssemblyCompanyAttribute))
                Console.WriteLine("Assembly company is {0}.",
                    ((AssemblyCompanyAttribute)attr).Company);
        }
   }
}
// The example displays the following output:
//     Assembly title is "CustAttrs1CS".
//     Assembly description is "GetCustomAttributes() Demo".
//     Assembly company is Microsoft.

注釈

注意

.NET Framework バージョン 2.0 以降では、属性が新しいメタデータ形式で格納されている場合、このメソッドはセキュリティ属性を返します。 バージョン 2.0 以降でコンパイルされたアセンブリでは、新しい形式が使用されます。 以前のバージョンの .NET Framework でコンパイルされた動的アセンブリとアセンブリでは、古い XML 形式が使用されます。 宣言型セキュリティ属性の出力 を参照してください。

適用対象

.NET 9 およびその他のバージョン
製品 バージョン
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

GetCustomAttributes(Assembly, Boolean)

ソース:
Attribute.CoreCLR.cs
ソース:
Attribute.CoreCLR.cs
ソース:
Attribute.CoreCLR.cs

アセンブリに適用されるカスタム属性の配列を取得します。 パラメーターは、アセンブリと無視される検索オプションを指定します。

C#
public static Attribute[] GetCustomAttributes (System.Reflection.Assembly element, bool inherit);

パラメーター

element
Assembly

モジュールの再利用可能なコレクションを記述する Assembly クラスから派生したオブジェクト。

inherit
Boolean

このパラメーターは無視され、このメソッドの操作には影響しません。

戻り値

elementに適用されるカスタム属性を含む Attribute 配列。そのようなカスタム属性が存在しない場合は空の配列。

例外

elementnullです。

次のコード例は、パラメーターとして Assembly を受け取る GetCustomAttributesの使用を示しています。

C#
using System;
using System.Reflection;

[assembly: AssemblyTitle("CustAttrs1CS")]
[assembly: AssemblyDescription("GetCustomAttributes() Demo")]
[assembly: AssemblyCompany("Microsoft")]

class Example {
    static void Main() {
        // Get the Assembly object to access its metadata.
        Assembly assy = typeof(Example).Assembly;

        // Iterate through the attributes for the assembly.
        foreach(Attribute attr in Attribute.GetCustomAttributes(assy)) {
            // Check for the AssemblyTitle attribute.
            if (attr.GetType() == typeof(AssemblyTitleAttribute))
                Console.WriteLine("Assembly title is \"{0}\".",
                    ((AssemblyTitleAttribute)attr).Title);

            // Check for the AssemblyDescription attribute.
            else if (attr.GetType() ==
                typeof(AssemblyDescriptionAttribute))
                Console.WriteLine("Assembly description is \"{0}\".",
                    ((AssemblyDescriptionAttribute)attr).Description);

            // Check for the AssemblyCompany attribute.
            else if (attr.GetType() == typeof(AssemblyCompanyAttribute))
                Console.WriteLine("Assembly company is {0}.",
                    ((AssemblyCompanyAttribute)attr).Company);
        }
   }
}
// The example displays the following output:
//     Assembly title is "CustAttrs1CS".
//     Assembly description is "GetCustomAttributes() Demo".
//     Assembly company is Microsoft.

適用対象

.NET 9 およびその他のバージョン
製品 バージョン
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

GetCustomAttributes(ParameterInfo)

ソース:
Attribute.CoreCLR.cs
ソース:
Attribute.CoreCLR.cs
ソース:
Attribute.CoreCLR.cs

メソッド パラメーターに適用されるカスタム属性の配列を取得します。 パラメーターはメソッド パラメーターを指定します。

C#
public static Attribute[] GetCustomAttributes (System.Reflection.ParameterInfo element);

パラメーター

element
ParameterInfo

クラスのメンバーのパラメーターを記述する ParameterInfo クラスから派生したオブジェクト。

戻り値

elementに適用されるカスタム属性を含む Attribute 配列。そのようなカスタム属性が存在しない場合は空の配列。

例外

elementnullです。

カスタム属性の型を読み込むことができません。

次のコード例は、パラメーターとして ParameterInfo を受け取る GetCustomAttributesの使用を示しています。

C#
using System;
using System.Reflection;
using System.ComponentModel;

namespace CustAttrs5CS {
    public class AClass {
        public void ParamArrayAndDesc(
            // Add ParamArray (with the keyword) and Description attributes.
            [Description("This argument is a ParamArray")]
            params int[] args)
        {}
    }

    class DemoClass {
        static void Main(string[] args) {
            // Get the Class type to access its metadata.
            Type clsType = typeof(AClass);
            // Get the type information for the method.
            MethodInfo mInfo = clsType.GetMethod("ParamArrayAndDesc");
            if (mInfo != null) {
                // Get the parameter information.
                ParameterInfo[] pInfo = mInfo.GetParameters();
                if (pInfo != null) {
                    // Iterate through all the attributes for the parameter.
                    foreach(Attribute attr in
                        Attribute.GetCustomAttributes(pInfo[0])) {
                        // Check for the ParamArray attribute.
                        if (attr.GetType() == typeof(ParamArrayAttribute))
                            Console.WriteLine("Parameter {0} for method {1} " +
                                "has the ParamArray attribute.",
                                pInfo[0].Name, mInfo.Name);
                        // Check for the Description attribute.
                        else if (attr.GetType() ==
                            typeof(DescriptionAttribute)) {
                            Console.WriteLine("Parameter {0} for method {1} " +
                                "has a description attribute.",
                                pInfo[0].Name, mInfo.Name);
                            Console.WriteLine("The description is: \"{0}\"",
                                ((DescriptionAttribute)attr).Description);
                        }
                    }
                }
            }
        }
    }
}

/*
 * Output:
 * Parameter args for method ParamArrayAndDesc has the ParamArray attribute.
 * Parameter args for method ParamArrayAndDesc has a description attribute.
 * The description is: "This argument is a ParamArray"
 */

注釈

element 派生型のメソッド内のパラメーターを表す場合、戻り値には、オーバーライドされた基本メソッドの同じパラメーターに適用される継承可能なカスタム属性が含まれます。

適用対象

.NET 9 およびその他のバージョン
製品 バージョン
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

GetCustomAttributes(Module)

ソース:
Attribute.CoreCLR.cs
ソース:
Attribute.CoreCLR.cs
ソース:
Attribute.CoreCLR.cs

モジュールに適用されるカスタム属性の配列を取得します。 パラメーターはモジュールを指定します。

C#
public static Attribute[] GetCustomAttributes (System.Reflection.Module element);

パラメーター

element
Module

移植可能な実行可能ファイルを記述する Module クラスから派生したオブジェクト。

戻り値

elementに適用されるカスタム属性を含む Attribute 配列。そのようなカスタム属性が存在しない場合は空の配列。

例外

elementnullです。

次のコード例は、パラメーターとして Module を受け取る GetCustomAttributesの使用を示しています。

C#
using System;
using System.Reflection;
using System.ComponentModel;

// Assign some attributes to the module.
[module:Description("A sample description")]

// Set the module's CLSCompliant attribute to false
// The CLSCompliant attribute is applicable for /target:module.
[module:CLSCompliant(false)]

namespace CustAttrs2CS {
    class DemoClass {
        static void Main(string[] args) {
            Type clsType = typeof(DemoClass);
            // Get the Module type to access its metadata.
            Module module = clsType.Module;

            // Iterate through all the attributes for the module.
            foreach(Attribute attr in Attribute.GetCustomAttributes(module)) {
                // Check for the Description attribute.
                if (attr.GetType() == typeof(DescriptionAttribute))
                    Console.WriteLine("Module {0} has the description " +
                        "\"{1}\".", module.Name,
                        ((DescriptionAttribute)attr).Description);
                // Check for the CLSCompliant attribute.
                else if (attr.GetType() == typeof(CLSCompliantAttribute))
                    Console.WriteLine("Module {0} {1} CLSCompliant.",
                        module.Name,
                        ((CLSCompliantAttribute)attr).IsCompliant ?
                            "is" : "is not");
            }
        }
    }
}

/*
 * Output:
 * Module CustAttrs2CS.exe is not CLSCompliant.
 * Module CustAttrs2CS.exe has the description "A sample description".
 */

適用対象

.NET 9 およびその他のバージョン
製品 バージョン
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

GetCustomAttributes(MemberInfo)

ソース:
Attribute.CoreCLR.cs
ソース:
Attribute.CoreCLR.cs
ソース:
Attribute.CoreCLR.cs

型のメンバーに適用されるカスタム属性の配列を取得します。 パラメーターはメンバーを指定します。

C#
public static Attribute[] GetCustomAttributes (System.Reflection.MemberInfo element);

パラメーター

element
MemberInfo

クラスのコンストラクター、イベント、フィールド、メソッド、またはプロパティ メンバーを記述する MemberInfo クラスから派生したオブジェクト。

戻り値

elementに適用されるカスタム属性を含む Attribute 配列。そのようなカスタム属性が存在しない場合は空の配列。

例外

elementnullです。

element は、コンストラクター、メソッド、プロパティ、イベント、型、またはフィールドではありません。

カスタム属性の型を読み込むことができません。

次のコード例は、パラメーターとして MemberInfo を受け取る GetCustomAttributeの使用を示しています。

C#
using System;
using System.Reflection;
using System.Security;
using System.Runtime.InteropServices;

namespace CustAttrs4CS
{

    // Define an enumeration of Win32 unmanaged types
    public enum UnmanagedType
    {
        User,
        GDI,
        Kernel,
        Shell,
        Networking,
        Multimedia
    }

    // Define the Unmanaged attribute.
    public class UnmanagedAttribute : Attribute
    {
        // Storage for the UnmanagedType value.
        protected UnmanagedType thisType;

        // Set the unmanaged type in the constructor.
        public UnmanagedAttribute(UnmanagedType type)
        {
            thisType = type;
        }

        // Define a property to get and set the UnmanagedType value.
        public UnmanagedType Win32Type
        {
            get { return thisType; }
            set { thisType = Win32Type; }
        }
    }

    // Create a class for an imported Win32 unmanaged function.
    public class Win32 {
        [DllImport("user32.dll", CharSet = CharSet.Unicode)]
        public static extern int MessageBox(int hWnd, String text,
            String caption, uint type);
    }

    public class AClass {
        // Add some attributes to Win32CallMethod.
        [Obsolete("This method is obsolete. Use managed MsgBox instead.")]
        [Unmanaged(UnmanagedType.User)]
        public void Win32CallMethod()
        {
            Win32.MessageBox(0, "This is an unmanaged call.", "Caution!", 0);
        }
    }

    class DemoClass {
        static void Main(string[] args)
            {
            // Get the AClass type to access its metadata.
            Type clsType = typeof(AClass);
            // Get the type information for Win32CallMethod.
            MethodInfo mInfo = clsType.GetMethod("Win32CallMethod");
            if (mInfo != null)
            {
                // Iterate through all the attributes of the method.
                foreach(Attribute attr in
                    Attribute.GetCustomAttributes(mInfo)) {
                    // Check for the Obsolete attribute.
                    if (attr.GetType() == typeof(ObsoleteAttribute))
                    {
                        Console.WriteLine("Method {0} is obsolete. " +
                            "The message is:",
                            mInfo.Name);
                        Console.WriteLine("  \"{0}\"",
                            ((ObsoleteAttribute)attr).Message);
                    }

                    // Check for the Unmanaged attribute.
                    else if (attr.GetType() == typeof(UnmanagedAttribute))
                    {
                        Console.WriteLine(
                            "This method calls unmanaged code.");
                        Console.WriteLine(
                            String.Format("The Unmanaged attribute type is {0}.",
                                          ((UnmanagedAttribute)attr).Win32Type));
                        AClass myCls = new AClass();
                        myCls.Win32CallMethod();
                    }
                }
            }
        }
    }
}

/*

This code example produces the following results.

First, the compilation yields the warning, "... This method is
obsolete. Use managed MsgBox instead."
Second, execution yields a message box with a title of "Caution!"
and message text of "This is an unmanaged call."
Third, the following text is displayed in the console window:

Method Win32CallMethod is obsolete. The message is:
  "This method is obsolete. Use managed MsgBox instead."
This method calls unmanaged code.
The Unmanaged attribute type is User.

*/

注釈

戻り値には、elementの先祖のカスタム属性が含まれます。

注意

.NET Framework バージョン 2.0 以降では、属性が新しいメタデータ形式で格納されている場合、このメソッドはメソッド、コンストラクター、および型のセキュリティ属性を返します。 バージョン 2.0 以降でコンパイルされたアセンブリでは、新しい形式が使用されます。 以前のバージョンの .NET Framework でコンパイルされた動的アセンブリとアセンブリでは、古い XML 形式が使用されます。 宣言型セキュリティ属性の出力 を参照してください。

適用対象

.NET 9 およびその他のバージョン
製品 バージョン
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

GetCustomAttributes(Assembly)

ソース:
Attribute.CoreCLR.cs
ソース:
Attribute.CoreCLR.cs
ソース:
Attribute.CoreCLR.cs

アセンブリに適用されるカスタム属性の配列を取得します。 パラメーターはアセンブリを指定します。

C#
public static Attribute[] GetCustomAttributes (System.Reflection.Assembly element);

パラメーター

element
Assembly

モジュールの再利用可能なコレクションを記述する Assembly クラスから派生したオブジェクト。

戻り値

elementに適用されるカスタム属性を含む Attribute 配列。そのようなカスタム属性が存在しない場合は空の配列。

例外

elementnullです。

次の例では、現在のアセンブリで見つかったカスタム属性を取得します。

C#
using System;
using System.Reflection;

[assembly: AssemblyTitle("CustAttrs1CS")]
[assembly: AssemblyDescription("GetCustomAttributes() Demo")]
[assembly: AssemblyCompany("Microsoft")]

class Example {
    static void Main() {
        // Get the Assembly object to access its metadata.
        Assembly assy = typeof(Example).Assembly;

        // Iterate through the attributes for the assembly.
        foreach(Attribute attr in Attribute.GetCustomAttributes(assy)) {
            // Check for the AssemblyTitle attribute.
            if (attr.GetType() == typeof(AssemblyTitleAttribute))
                Console.WriteLine("Assembly title is \"{0}\".",
                    ((AssemblyTitleAttribute)attr).Title);

            // Check for the AssemblyDescription attribute.
            else if (attr.GetType() ==
                typeof(AssemblyDescriptionAttribute))
                Console.WriteLine("Assembly description is \"{0}\".",
                    ((AssemblyDescriptionAttribute)attr).Description);

            // Check for the AssemblyCompany attribute.
            else if (attr.GetType() == typeof(AssemblyCompanyAttribute))
                Console.WriteLine("Assembly company is {0}.",
                    ((AssemblyCompanyAttribute)attr).Company);
        }
   }
}
// The example displays the following output:
//     Assembly title is "CustAttrs1CS".
//     Assembly description is "GetCustomAttributes() Demo".
//     Assembly company is Microsoft.

注釈

注意

.NET Framework バージョン 2.0 以降では、属性が新しいメタデータ形式で格納されている場合、このメソッドはセキュリティ属性を返します。 バージョン 2.0 以降でコンパイルされたアセンブリでは、新しい形式が使用されます。 以前のバージョンの .NET Framework でコンパイルされた動的アセンブリとアセンブリでは、古い XML 形式が使用されます。 宣言型セキュリティ属性の出力 を参照してください。

適用対象

.NET 9 およびその他のバージョン
製品 バージョン
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

GetCustomAttributes(Module, Boolean)

ソース:
Attribute.CoreCLR.cs
ソース:
Attribute.CoreCLR.cs
ソース:
Attribute.CoreCLR.cs

モジュールに適用されるカスタム属性の配列を取得します。 パラメーターは、モジュールと無視される検索オプションを指定します。

C#
public static Attribute[] GetCustomAttributes (System.Reflection.Module element, bool inherit);

パラメーター

element
Module

移植可能な実行可能ファイルを記述する Module クラスから派生したオブジェクト。

inherit
Boolean

このパラメーターは無視され、このメソッドの操作には影響しません。

戻り値

elementに適用されるカスタム属性を含む Attribute 配列。そのようなカスタム属性が存在しない場合は空の配列。

例外

elementnullです。

次のコード例は、パラメーターとして Module を受け取る GetCustomAttributesの使用を示しています。

C#
using System;
using System.Reflection;
using System.ComponentModel;

// Assign some attributes to the module.
[module:Description("A sample description")]

// Set the module's CLSCompliant attribute to false
// The CLSCompliant attribute is applicable for /target:module.
[module:CLSCompliant(false)]

namespace CustAttrs2CS {
    class DemoClass {
        static void Main(string[] args) {
            Type clsType = typeof(DemoClass);
            // Get the Module type to access its metadata.
            Module module = clsType.Module;

            // Iterate through all the attributes for the module.
            foreach(Attribute attr in Attribute.GetCustomAttributes(module)) {
                // Check for the Description attribute.
                if (attr.GetType() == typeof(DescriptionAttribute))
                    Console.WriteLine("Module {0} has the description " +
                        "\"{1}\".", module.Name,
                        ((DescriptionAttribute)attr).Description);
                // Check for the CLSCompliant attribute.
                else if (attr.GetType() == typeof(CLSCompliantAttribute))
                    Console.WriteLine("Module {0} {1} CLSCompliant.",
                        module.Name,
                        ((CLSCompliantAttribute)attr).IsCompliant ?
                            "is" : "is not");
            }
        }
    }
}

/*
 * Output:
 * Module CustAttrs2CS.exe is not CLSCompliant.
 * Module CustAttrs2CS.exe has the description "A sample description".
 */

注釈

戻り値には、inherittrueされている場合、element の先祖のカスタム属性が含まれます。

適用対象

.NET 9 およびその他のバージョン
製品 バージョン
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1