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)

Source:
Attribute.CoreCLR.cs
Source:
Attribute.CoreCLR.cs
Source:
Attribute.CoreCLR.cs

메서드 매개 변수에 적용된 사용자 지정 특성의 배열을 검색합니다. 매개 변수는 메서드 매개 변수와 메서드 매개 변수의 상위 항목 검색 여부를 지정합니다.

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

매개 변수

element
ParameterInfo

클래스의 멤버 매개 변수를 설명하는 ParameterInfo 클래스에서 파생된 개체입니다.

inherit
Boolean

true경우 element 상위 항목에서도 사용자 지정 특성을 검색하도록 지정합니다.

반환

element적용된 사용자 지정 특성을 포함하는 Attribute 배열이거나, 이러한 사용자 지정 특성이 없는 경우 빈 배열입니다.

예외

element Member 속성은 null.

element null.

사용자 지정 특성 형식을 로드할 수 없습니다.

예제

다음 코드 예제에서는 매개 변수로 ParameterInfo 사용하여 GetCustomAttributes사용하는 방법을 보여 줍니다.

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)

Source:
Attribute.CoreCLR.cs
Source:
Attribute.CoreCLR.cs
Source:
Attribute.CoreCLR.cs

형식의 멤버에 적용된 사용자 지정 특성의 배열을 검색합니다. 매개 변수는 멤버, 검색할 사용자 지정 특성의 형식 및 멤버의 상위 항목 검색 여부를 지정합니다.

public static Attribute[] GetCustomAttributes (System.Reflection.MemberInfo element, Type type, bool inherit);
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.

type Attribute파생되지 않습니다.

element 생성자, 메서드, 속성, 이벤트, 형식 또는 필드가 아닙니다.

사용자 지정 특성 형식을 로드할 수 없습니다.

예제

다음 코드 예제에서는 매개 변수로 MemberInfo 사용하여 GetCustomAttributes사용하는 방법을 보여 줍니다.

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)

Source:
Attribute.CoreCLR.cs
Source:
Attribute.CoreCLR.cs
Source:
Attribute.CoreCLR.cs

메서드 매개 변수에 적용된 사용자 지정 특성의 배열을 검색합니다. 매개 변수는 메서드 매개 변수, 검색할 사용자 지정 특성의 형식 및 메서드 매개 변수의 상위 항목 검색 여부를 지정합니다.

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.

attributeType Attribute파생되지 않습니다.

사용자 지정 특성 형식을 로드할 수 없습니다.

예제

다음 코드 예제에서는 매개 변수로 ParameterInfo 사용하여 GetCustomAttributes사용하는 방법을 보여 줍니다.

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)

Source:
Attribute.CoreCLR.cs
Source:
Attribute.CoreCLR.cs
Source:
Attribute.CoreCLR.cs

모듈에 적용된 사용자 지정 특성의 배열을 검색합니다. 매개 변수는 모듈, 검색할 사용자 지정 특성의 형식 및 무시된 검색 옵션을 지정합니다.

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

매개 변수

element
Module

이식 가능한 실행 파일을 설명하는 Module 클래스에서 파생된 개체입니다.

attributeType
Type

검색할 사용자 지정 특성의 형식 또는 기본 형식입니다.

inherit
Boolean

이 매개 변수는 무시되며 이 메서드의 작업에는 영향을 주지 않습니다.

반환

element적용할 attributeType 형식의 사용자 지정 특성을 포함하는 Attribute 배열이거나, 이러한 사용자 지정 특성이 없는 경우 빈 배열입니다.

예외

element 또는 attributeTypenull.

attributeType Attribute파생되지 않습니다.

예제

다음 코드 예제에서는 매개 변수로 Module 사용하여 GetCustomAttributes사용하는 방법을 보여 줍니다.

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)

Source:
Attribute.CoreCLR.cs
Source:
Attribute.CoreCLR.cs
Source:
Attribute.CoreCLR.cs

형식의 멤버에 적용된 사용자 지정 특성의 배열을 검색합니다. 매개 변수는 멤버 및 검색할 사용자 지정 특성의 형식을 지정합니다.

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

매개 변수

element
MemberInfo

클래스의 생성자, 이벤트, 필드, 메서드 또는 속성 멤버를 설명하는 MemberInfo 클래스에서 파생된 개체입니다.

typeattributeType
Type

검색할 사용자 지정 특성의 형식 또는 기본 형식입니다.

반환

element적용할 type 형식의 사용자 지정 특성을 포함하는 Attribute 배열이거나, 이러한 사용자 지정 특성이 없는 경우 빈 배열입니다.

예외

element 또는 typenull.

type Attribute파생되지 않습니다.

element 생성자, 메서드, 속성, 이벤트, 형식 또는 필드가 아닙니다.

사용자 지정 특성 형식을 로드할 수 없습니다.

예제

다음 코드 예제에서는 매개 변수로 MemberInfo 사용하여 GetCustomAttribute사용하는 방법을 보여 줍니다.

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)

Source:
Attribute.CoreCLR.cs
Source:
Attribute.CoreCLR.cs
Source:
Attribute.CoreCLR.cs

어셈블리에 적용된 사용자 지정 특성의 배열을 검색합니다. 매개 변수는 어셈블리, 검색할 사용자 지정 특성의 형식 및 무시된 검색 옵션을 지정합니다.

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

매개 변수

element
Assembly

다시 사용할 수 있는 모듈 컬렉션을 설명하는 Assembly 클래스에서 파생된 개체입니다.

attributeType
Type

검색할 사용자 지정 특성의 형식 또는 기본 형식입니다.

inherit
Boolean

이 매개 변수는 무시되며 이 메서드의 작업에는 영향을 주지 않습니다.

반환

element적용할 attributeType 형식의 사용자 지정 특성을 포함하는 Attribute 배열이거나, 이러한 사용자 지정 특성이 없는 경우 빈 배열입니다.

예외

element 또는 attributeTypenull.

attributeType Attribute파생되지 않습니다.

예제

다음 코드 예제에서는 매개 변수로 Assembly 사용하여 GetCustomAttributes사용하는 방법을 보여 줍니다.

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)

Source:
Attribute.CoreCLR.cs
Source:
Attribute.CoreCLR.cs
Source:
Attribute.CoreCLR.cs

모듈에 적용된 사용자 지정 특성의 배열을 검색합니다. 매개 변수는 모듈 및 검색할 사용자 지정 특성의 형식을 지정합니다.

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

매개 변수

element
Module

이식 가능한 실행 파일을 설명하는 Module 클래스에서 파생된 개체입니다.

attributeType
Type

검색할 사용자 지정 특성의 형식 또는 기본 형식입니다.

반환

element적용할 attributeType 형식의 사용자 지정 특성을 포함하는 Attribute 배열이거나, 이러한 사용자 지정 특성이 없는 경우 빈 배열입니다.

예외

element 또는 attributeTypenull.

attributeType Attribute파생되지 않습니다.

예제

다음 코드 예제에서는 매개 변수로 Module 사용하여 GetCustomAttributes사용하는 방법을 보여 줍니다.

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)

Source:
Attribute.CoreCLR.cs
Source:
Attribute.CoreCLR.cs
Source:
Attribute.CoreCLR.cs

메서드 매개 변수에 적용된 사용자 지정 특성의 배열을 검색합니다. 매개 변수는 메서드 매개 변수 및 검색할 사용자 지정 특성의 형식을 지정합니다.

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

매개 변수

element
ParameterInfo

클래스의 멤버 매개 변수를 설명하는 ParameterInfo 클래스에서 파생된 개체입니다.

attributeType
Type

검색할 사용자 지정 특성의 형식 또는 기본 형식입니다.

반환

element적용할 attributeType 형식의 사용자 지정 특성을 포함하는 Attribute 배열이거나, 이러한 사용자 지정 특성이 없는 경우 빈 배열입니다.

예외

element 또는 attributeTypenull.

attributeType Attribute파생되지 않습니다.

사용자 지정 특성 형식을 로드할 수 없습니다.

예제

다음 코드 예제에서는 매개 변수로 ParameterInfo 사용하여 GetCustomAttributes사용하는 방법을 보여 줍니다.

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)

Source:
Attribute.CoreCLR.cs
Source:
Attribute.CoreCLR.cs
Source:
Attribute.CoreCLR.cs

형식의 멤버에 적용된 사용자 지정 특성의 배열을 검색합니다. 매개 변수는 멤버, 검색할 사용자 지정 특성의 형식 및 멤버의 상위 항목 검색 여부를 지정합니다.

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

매개 변수

element
MemberInfo

클래스의 생성자, 이벤트, 필드, 메서드 또는 속성 멤버를 설명하는 MemberInfo 클래스에서 파생된 개체입니다.

inherit
Boolean

true경우 element 상위 항목에서도 사용자 지정 특성을 검색하도록 지정합니다.

반환

element적용된 사용자 지정 특성을 포함하는 Attribute 배열이거나, 이러한 사용자 지정 특성이 없는 경우 빈 배열입니다.

예외

element null.

element 생성자, 메서드, 속성, 이벤트, 형식 또는 필드가 아닙니다.

사용자 지정 특성 형식을 로드할 수 없습니다.

예제

다음 코드 예제에서는 매개 변수로 MemberInfo 사용하여 GetCustomAttributes사용하는 방법을 보여 줍니다.

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)

Source:
Attribute.CoreCLR.cs
Source:
Attribute.CoreCLR.cs
Source:
Attribute.CoreCLR.cs

어셈블리에 적용된 사용자 지정 특성의 배열을 검색합니다. 매개 변수는 어셈블리와 검색할 사용자 지정 특성의 형식을 지정합니다.

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

매개 변수

element
Assembly

다시 사용할 수 있는 모듈 컬렉션을 설명하는 Assembly 클래스에서 파생된 개체입니다.

attributeType
Type

검색할 사용자 지정 특성의 형식 또는 기본 형식입니다.

반환

element적용할 attributeType 형식의 사용자 지정 특성을 포함하는 Attribute 배열이거나, 이러한 사용자 지정 특성이 없는 경우 빈 배열입니다.

예외

element 또는 attributeTypenull.

attributeType Attribute파생되지 않습니다.

예제

다음 코드 예제에서는 매개 변수로 Assembly 사용하여 GetCustomAttributes사용하는 방법을 보여 줍니다.

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)

Source:
Attribute.CoreCLR.cs
Source:
Attribute.CoreCLR.cs
Source:
Attribute.CoreCLR.cs

어셈블리에 적용된 사용자 지정 특성의 배열을 검색합니다. 매개 변수는 어셈블리 및 무시된 검색 옵션을 지정합니다.

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

매개 변수

element
Assembly

다시 사용할 수 있는 모듈 컬렉션을 설명하는 Assembly 클래스에서 파생된 개체입니다.

inherit
Boolean

이 매개 변수는 무시되며 이 메서드의 작업에는 영향을 주지 않습니다.

반환

element적용된 사용자 지정 특성을 포함하는 Attribute 배열이거나, 이러한 사용자 지정 특성이 없는 경우 빈 배열입니다.

예외

element null.

예제

다음 코드 예제에서는 매개 변수로 Assembly 사용하여 GetCustomAttributes사용하는 방법을 보여 줍니다.

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)

Source:
Attribute.CoreCLR.cs
Source:
Attribute.CoreCLR.cs
Source:
Attribute.CoreCLR.cs

메서드 매개 변수에 적용된 사용자 지정 특성의 배열을 검색합니다. 매개 변수는 메서드 매개 변수를 지정합니다.

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

매개 변수

element
ParameterInfo

클래스의 멤버 매개 변수를 설명하는 ParameterInfo 클래스에서 파생된 개체입니다.

반환

element적용된 사용자 지정 특성을 포함하는 Attribute 배열이거나, 이러한 사용자 지정 특성이 없는 경우 빈 배열입니다.

예외

element null.

사용자 지정 특성 형식을 로드할 수 없습니다.

예제

다음 코드 예제에서는 매개 변수로 ParameterInfo 사용하여 GetCustomAttributes사용하는 방법을 보여 줍니다.

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)

Source:
Attribute.CoreCLR.cs
Source:
Attribute.CoreCLR.cs
Source:
Attribute.CoreCLR.cs

모듈에 적용된 사용자 지정 특성의 배열을 검색합니다. 매개 변수는 모듈을 지정합니다.

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

매개 변수

element
Module

이식 가능한 실행 파일을 설명하는 Module 클래스에서 파생된 개체입니다.

반환

element적용된 사용자 지정 특성을 포함하는 Attribute 배열이거나, 이러한 사용자 지정 특성이 없는 경우 빈 배열입니다.

예외

element null.

예제

다음 코드 예제에서는 매개 변수로 Module 사용하여 GetCustomAttributes사용하는 방법을 보여 줍니다.

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)

Source:
Attribute.CoreCLR.cs
Source:
Attribute.CoreCLR.cs
Source:
Attribute.CoreCLR.cs

형식의 멤버에 적용된 사용자 지정 특성의 배열을 검색합니다. 매개 변수는 멤버를 지정합니다.

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

매개 변수

element
MemberInfo

클래스의 생성자, 이벤트, 필드, 메서드 또는 속성 멤버를 설명하는 MemberInfo 클래스에서 파생된 개체입니다.

반환

element적용된 사용자 지정 특성을 포함하는 Attribute 배열이거나, 이러한 사용자 지정 특성이 없는 경우 빈 배열입니다.

예외

element null.

element 생성자, 메서드, 속성, 이벤트, 형식 또는 필드가 아닙니다.

사용자 지정 특성 형식을 로드할 수 없습니다.

예제

다음 코드 예제에서는 매개 변수로 MemberInfo 사용하여 GetCustomAttribute사용하는 방법을 보여 줍니다.

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)

Source:
Attribute.CoreCLR.cs
Source:
Attribute.CoreCLR.cs
Source:
Attribute.CoreCLR.cs

어셈블리에 적용된 사용자 지정 특성의 배열을 검색합니다. 매개 변수는 어셈블리를 지정합니다.

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

매개 변수

element
Assembly

다시 사용할 수 있는 모듈 컬렉션을 설명하는 Assembly 클래스에서 파생된 개체입니다.

반환

element적용된 사용자 지정 특성을 포함하는 Attribute 배열이거나, 이러한 사용자 지정 특성이 없는 경우 빈 배열입니다.

예외

element null.

예제

다음 예제에서는 현재 어셈블리에 있는 사용자 지정 특성을 검색합니다.

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)

Source:
Attribute.CoreCLR.cs
Source:
Attribute.CoreCLR.cs
Source:
Attribute.CoreCLR.cs

모듈에 적용된 사용자 지정 특성의 배열을 검색합니다. 매개 변수는 모듈 및 무시된 검색 옵션을 지정합니다.

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

매개 변수

element
Module

이식 가능한 실행 파일을 설명하는 Module 클래스에서 파생된 개체입니다.

inherit
Boolean

이 매개 변수는 무시되며 이 메서드의 작업에는 영향을 주지 않습니다.

반환

element적용된 사용자 지정 특성을 포함하는 Attribute 배열이거나, 이러한 사용자 지정 특성이 없는 경우 빈 배열입니다.

예외

element null.

예제

다음 코드 예제에서는 매개 변수로 Module 사용하여 GetCustomAttributes사용하는 방법을 보여 줍니다.

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