Прочитать на английском

Поделиться через


Attribute.IsDefined Метод

Определение

Определяет, применен ли какой-либо настраиваемый атрибут указанного типа к сборке, модулю, члену типа или параметру метода.

Перегрузки

IsDefined(ParameterInfo, Type, Boolean)

Определяет, применены ли какие-либо настраиваемые атрибуты к параметру метода. Параметры определяют параметр метода и тип настраиваемого атрибута для поиска и признак поиска родительского элемента параметра метода.

IsDefined(Module, Type, Boolean)

Определяет, применены ли какие-либо настраиваемые атрибуты к модулю. Параметры определяют модуль, тип настраиваемого атрибута для поиска и игнорированный параметр поиска.

IsDefined(MemberInfo, Type, Boolean)

Определяет, применены ли какие-либо настраиваемые атрибуты к члену типа. Параметры определяют член и тип настраиваемого атрибута для поиска и признак поиска родительского элемента члена.

IsDefined(Assembly, Type, Boolean)

Определяет, применены ли какие-либо настраиваемые атрибуты к сборке. Параметры определяют сборку, тип настраиваемого атрибута для поиска и игнорированный параметр поиска.

IsDefined(MemberInfo, Type)

Определяет, применены ли какие-либо настраиваемые атрибуты к члену типа. Параметры определяют член и тип настраиваемого атрибута для поиска.

IsDefined(Module, Type)

Определяет применены ли какие-либо пользовательские атрибуты заданного типа к модулю. Параметры определяют модуль и тип настраиваемого атрибута для поиска.

IsDefined(Assembly, Type)

Определяет, применены ли какие-либо настраиваемые атрибуты к сборке. Параметры определяют сборку и тип настраиваемого атрибута для поиска.

IsDefined(ParameterInfo, Type)

Определяет, применены ли какие-либо настраиваемые атрибуты к параметру метода. Параметры определяют параметр метода и тип настраиваемого атрибута для поиска.

IsDefined(ParameterInfo, Type, Boolean)

Исходный код:
Attribute.CoreCLR.cs
Исходный код:
Attribute.CoreCLR.cs
Исходный код:
Attribute.CoreCLR.cs

Определяет, применены ли какие-либо настраиваемые атрибуты к параметру метода. Параметры определяют параметр метода и тип настраиваемого атрибута для поиска и признак поиска родительского элемента параметра метода.

public static bool IsDefined (System.Reflection.ParameterInfo element, Type attributeType, bool inherit);

Параметры

element
ParameterInfo

Объект, являющийся производным от класса ParameterInfo, который описывает параметр члена класса.

attributeType
Type

Тип или базовый тип искомого настраиваемого атрибута.

inherit
Boolean

Если true, задает для настраиваемых атрибутов поиск родительских элементов для element.

Возвращаемое значение

true, если настраиваемый атрибут типа attributeType применен к элементу, указанному в параметре element; в противном случае — false.

Исключения

Параметр element или attributeType имеет значение null.

Тип attributeType не является производным объекта Attribute.

element не является методом, конструктором или типом.

Примеры

В следующем примере кода показано использование IsDefined, принимая в ParameterInfo качестве параметра .

using System;
using System.Reflection;

namespace IsDef5CS
{
    public class TestClass
    {
        // Assign a ParamArray attribute to the parameter using the keyword.
        public void Method1(params String[] args)
        {}
    }

    public class DemoClass
    {
        static void Main(string[] args)
        {
            // Get the class type to access its metadata.
            Type clsType = typeof(TestClass);
            // Get the MethodInfo object for Method1.
            MethodInfo mInfo = clsType.GetMethod("Method1");
            // Get the ParameterInfo array for the method parameters.
            ParameterInfo[] pInfo = mInfo.GetParameters();
            if (pInfo != null)
            {
                // See if the ParamArray attribute is defined.
                bool isDef = Attribute.IsDefined(pInfo[0],
                                                 typeof(ParamArrayAttribute));
                // Display the result.
                Console.WriteLine("The ParamArray attribute {0} defined for " +
                                  "parameter {1} of method {2}.",
                                  isDef ? "is" : "is not",
                                  pInfo[0].Name,
                                  mInfo.Name);
            }
            else
                Console.WriteLine("The parameters information could " +
                            "not be retrieved for method {0}.", mInfo.Name);
        }
    }
}

/*
 * Output:
 * The ParamArray attribute is defined for parameter args of method Method1.
 */

Применяется к

.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

IsDefined(Module, Type, Boolean)

Исходный код:
Attribute.CoreCLR.cs
Исходный код:
Attribute.CoreCLR.cs
Исходный код:
Attribute.CoreCLR.cs

Определяет, применены ли какие-либо настраиваемые атрибуты к модулю. Параметры определяют модуль, тип настраиваемого атрибута для поиска и игнорированный параметр поиска.

public static bool IsDefined (System.Reflection.Module element, Type attributeType, bool inherit);

Параметры

element
Module

Объект, являющийся производным от класса Module, который описывает переносимый исполняемый файл.

attributeType
Type

Тип или базовый тип искомого настраиваемого атрибута.

inherit
Boolean

Этот параметр игнорируется и не влияет на работу данного метода.

Возвращаемое значение

true, если настраиваемый атрибут типа attributeType применен к элементу, указанному в параметре element; в противном случае — false.

Исключения

Параметр element или attributeType имеет значение null.

Тип attributeType не является производным объекта Attribute.

Примеры

В следующем примере кода показано использование IsDefined, принимая в Module качестве параметра .

using System;
using System.Diagnostics;

// Add the Debuggable attribute to the module.
[module:Debuggable(true, false)]
namespace IsDef2CS
{
    public class DemoClass
    {
        static void Main(string[] args)
        {
            // Get the class type to access its metadata.
            Type clsType = typeof(DemoClass);
            // See if the Debuggable attribute is defined for this module.
            bool isDef = Attribute.IsDefined(clsType.Module,
                typeof(DebuggableAttribute));
            // Display the result.
            Console.WriteLine("The Debuggable attribute {0} " +
                "defined for Module {1}.",
                isDef ? "is" : "is not",
                clsType.Module.Name);
            // If the attribute is defined, display the JIT settings.
            if (isDef)
            {
                // Retrieve the attribute itself.
                DebuggableAttribute dbgAttr = (DebuggableAttribute)
                    Attribute.GetCustomAttribute(clsType.Module,
                    typeof(DebuggableAttribute));
                if (dbgAttr != null)
                {
                    Console.WriteLine("JITTrackingEnabled is {0}.",
                        dbgAttr.IsJITTrackingEnabled);
                    Console.WriteLine("JITOptimizerDisabled is {0}.",
                        dbgAttr.IsJITOptimizerDisabled);
                }
                else
                    Console.WriteLine("The Debuggable attribute " +
                        "could not be retrieved.");
            }
        }
    }
}

/*
 * Output:
 * The Debuggable attribute is defined for Module IsDef2CS.exe.
 * JITTrackingEnabled is True.
 * JITOptimizerDisabled is False.
 */

Комментарии

Этот метод игнорирует inherit параметр и не выполняет поиск настраиваемых 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

IsDefined(MemberInfo, Type, Boolean)

Исходный код:
Attribute.CoreCLR.cs
Исходный код:
Attribute.CoreCLR.cs
Исходный код:
Attribute.CoreCLR.cs

Определяет, применены ли какие-либо настраиваемые атрибуты к члену типа. Параметры определяют член и тип настраиваемого атрибута для поиска и признак поиска родительского элемента члена.

public static bool IsDefined (System.Reflection.MemberInfo element, Type attributeType, bool inherit);

Параметры

element
MemberInfo

Объект, производный от класса MemberInfo, описывающий член класса — конструктор, событие, поле, тип, метод или свойство.

attributeType
Type

Тип или базовый тип искомого настраиваемого атрибута.

inherit
Boolean

Если true, задает для настраиваемых атрибутов поиск родительских элементов для element.

Возвращаемое значение

true, если настраиваемый атрибут типа attributeType применен к элементу, указанному в параметре element; в противном случае — false.

Исключения

Параметр element или attributeType имеет значение null.

Тип attributeType не является производным объекта Attribute.

element не представляет конструктор, метод, свойство, событие, тип или поле.

Примеры

В следующем примере кода показано использование IsDefined, принимая в MemberInfo качестве параметра .

using System;
using System.Reflection;

namespace IsDef4CS
{
    public class TestClass
    {
        // Assign the Obsolete attribute to a method.
        [Obsolete("This method is obsolete. Use Method2 instead.")]
        public void Method1()
        {}
        public void Method2()
        {}
    }

    public class DemoClass
    {
        static void Main(string[] args)
        {
            // Get the class type to access its metadata.
            Type clsType = typeof(TestClass);
            // Get the MethodInfo object for Method1.
            MethodInfo mInfo = clsType.GetMethod("Method1");
            // See if the Obsolete attribute is defined for this method.
            bool isDef = Attribute.IsDefined(mInfo, typeof(ObsoleteAttribute));
            // Display the result.
            Console.WriteLine("The Obsolete Attribute {0} defined for {1} of class {2}.",
                isDef ? "is" : "is not", mInfo.Name, clsType.Name);
            // If it's defined, display the attribute's message.
            if (isDef)
            {
                ObsoleteAttribute obsAttr =
                                 (ObsoleteAttribute)Attribute.GetCustomAttribute(
                                                    mInfo, typeof(ObsoleteAttribute));
                if (obsAttr != null)
                    Console.WriteLine("The message is: \"{0}\".",
                        obsAttr.Message);
                else
                    Console.WriteLine("The message could not be retrieved.");
            }
        }
    }
}

/*
 * Output:
 * The Obsolete Attribute is defined for Method1 of class TestClass.
 * The message is: "This method is obsolete. Use Method2 instead.".
 */

Комментарии

Примечание

Начиная с платформа .NET Framework версии 2.0 этот метод возвращает значение true , если тип, метод или конструктор имеют атрибуты безопасности, хранящиеся в новом формате метаданных. Сборки, скомпилированные с версией 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

IsDefined(Assembly, Type, Boolean)

Исходный код:
Attribute.CoreCLR.cs
Исходный код:
Attribute.CoreCLR.cs
Исходный код:
Attribute.CoreCLR.cs

Определяет, применены ли какие-либо настраиваемые атрибуты к сборке. Параметры определяют сборку, тип настраиваемого атрибута для поиска и игнорированный параметр поиска.

public static bool IsDefined (System.Reflection.Assembly element, Type attributeType, bool inherit);

Параметры

element
Assembly

Объект, производный от класса Assembly, который описывает многократно используемую коллекцию модулей.

attributeType
Type

Тип или базовый тип искомого настраиваемого атрибута.

inherit
Boolean

Этот параметр игнорируется и не влияет на работу данного метода.

Возвращаемое значение

true, если настраиваемый атрибут типа attributeType применен к элементу, указанному в параметре element; в противном случае — false.

Исключения

Параметр element или attributeType имеет значение null.

Тип attributeType не является производным объекта Attribute.

Примеры

В следующем примере кода показано использование IsDefined, принимая в Assembly качестве параметра .

using System;
using System.Reflection;

// Add an AssemblyDescription attribute
[assembly: AssemblyDescription("A sample description")]
namespace IsDef1CS
{
    public class DemoClass
    {
        static void Main(string[] args)
        {
            // Get the class type to access its metadata.
            Type clsType = typeof(DemoClass);
            // Get the assembly object.
            Assembly assy = clsType.Assembly;
            // Store the assembly's name.
            String assyName = assy.GetName().Name;
            // See if the Assembly Description is defined.
            bool isdef = Attribute.IsDefined(assy,
                typeof(AssemblyDescriptionAttribute));
            if (isdef)
            {
                // Affirm that the attribute is defined.
                Console.WriteLine("The AssemblyDescription attribute " +
                    "is defined for assembly {0}.", assyName);
                // Get the description attribute itself.
                AssemblyDescriptionAttribute adAttr =
                    (AssemblyDescriptionAttribute)Attribute.GetCustomAttribute(
                    assy, typeof(AssemblyDescriptionAttribute));
                // Display the description.
                if (adAttr != null)
                    Console.WriteLine("The description is \"{0}\".",
                        adAttr.Description);
                else
                    Console.WriteLine("The description could not " +
                        "be retrieved.");
            }
            else
                Console.WriteLine("The AssemblyDescription attribute is not " +
                    "defined for assembly {0}.", assyName);
        }
    }
}

/*
 * Output:
 * The AssemblyDescription attribute is defined for assembly IsDef1CS.
 * The description is "A sample description".
 */

Комментарии

Примечание

Начиная с платформа .NET Framework версии 2.0, этот метод возвращает значение true , если сборка имеет атрибуты безопасности, хранящиеся в новом формате метаданных. Сборки, скомпилированные с версией 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

IsDefined(MemberInfo, Type)

Исходный код:
Attribute.CoreCLR.cs
Исходный код:
Attribute.CoreCLR.cs
Исходный код:
Attribute.CoreCLR.cs

Определяет, применены ли какие-либо настраиваемые атрибуты к члену типа. Параметры определяют член и тип настраиваемого атрибута для поиска.

public static bool IsDefined (System.Reflection.MemberInfo element, Type attributeType);

Параметры

element
MemberInfo

Объект, производный от класса MemberInfo, описывающий член класса — конструктор, событие, поле, тип, метод или свойство.

attributeType
Type

Тип или базовый тип искомого настраиваемого атрибута.

Возвращаемое значение

true, если настраиваемый атрибут типа attributeType применен к элементу, указанному в параметре element; в противном случае — false.

Исключения

Параметр element или attributeType имеет значение null.

Тип attributeType не является производным объекта Attribute.

element не представляет конструктор, метод, свойство, событие, тип или поле.

Примеры

В следующем примере кода показано использование IsDefined, принимая в MemberInfo качестве параметра .

using System;
using System.Reflection;

namespace IsDef4CS
{
    public class TestClass
    {
        // Assign the Obsolete attribute to a method.
        [Obsolete("This method is obsolete. Use Method2 instead.")]
        public void Method1()
        {}
        public void Method2()
        {}
    }

    public class DemoClass
    {
        static void Main(string[] args)
        {
            // Get the class type to access its metadata.
            Type clsType = typeof(TestClass);
            // Get the MethodInfo object for Method1.
            MethodInfo mInfo = clsType.GetMethod("Method1");
            // See if the Obsolete attribute is defined for this method.
            bool isDef = Attribute.IsDefined(mInfo, typeof(ObsoleteAttribute));
            // Display the result.
            Console.WriteLine("The Obsolete Attribute {0} defined for {1} of class {2}.",
                isDef ? "is" : "is not", mInfo.Name, clsType.Name);
            // If it's defined, display the attribute's message.
            if (isDef)
            {
                ObsoleteAttribute obsAttr =
                                 (ObsoleteAttribute)Attribute.GetCustomAttribute(
                                                    mInfo, typeof(ObsoleteAttribute));
                if (obsAttr != null)
                    Console.WriteLine("The message is: \"{0}\".",
                        obsAttr.Message);
                else
                    Console.WriteLine("The message could not be retrieved.");
            }
        }
    }
}

/*
 * Output:
 * The Obsolete Attribute is defined for Method1 of class TestClass.
 * The message is: "This method is obsolete. Use Method2 instead.".
 */

Комментарии

Для предков element выполняется поиск настраиваемых атрибутов.

Примечание

Начиная с платформа .NET Framework версии 2.0 этот метод возвращает значение true , если тип, метод или конструктор имеют атрибуты безопасности, хранящиеся в новом формате метаданных. Сборки, скомпилированные с версией 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

IsDefined(Module, Type)

Исходный код:
Attribute.CoreCLR.cs
Исходный код:
Attribute.CoreCLR.cs
Исходный код:
Attribute.CoreCLR.cs

Определяет применены ли какие-либо пользовательские атрибуты заданного типа к модулю. Параметры определяют модуль и тип настраиваемого атрибута для поиска.

public static bool IsDefined (System.Reflection.Module element, Type attributeType);

Параметры

element
Module

Объект, являющийся производным от класса Module, который описывает переносимый исполняемый файл.

attributeType
Type

Тип или базовый тип искомого настраиваемого атрибута.

Возвращаемое значение

true, если настраиваемый атрибут типа attributeType применен к элементу, указанному в параметре element; в противном случае — false.

Исключения

Параметр element или attributeType имеет значение null.

Тип attributeType не является производным объекта Attribute.

Примеры

В следующем примере кода показано использование IsDefined, принимая в Module качестве параметра .

using System;
using System.Diagnostics;

// Add the Debuggable attribute to the module.
[module:Debuggable(true, false)]
namespace IsDef2CS
{
    public class DemoClass
    {
        static void Main(string[] args)
        {
            // Get the class type to access its metadata.
            Type clsType = typeof(DemoClass);
            // See if the Debuggable attribute is defined for this module.
            bool isDef = Attribute.IsDefined(clsType.Module,
                typeof(DebuggableAttribute));
            // Display the result.
            Console.WriteLine("The Debuggable attribute {0} " +
                "defined for Module {1}.",
                isDef ? "is" : "is not",
                clsType.Module.Name);
            // If the attribute is defined, display the JIT settings.
            if (isDef)
            {
                // Retrieve the attribute itself.
                DebuggableAttribute dbgAttr = (DebuggableAttribute)
                    Attribute.GetCustomAttribute(clsType.Module,
                    typeof(DebuggableAttribute));
                if (dbgAttr != null)
                {
                    Console.WriteLine("JITTrackingEnabled is {0}.",
                        dbgAttr.IsJITTrackingEnabled);
                    Console.WriteLine("JITOptimizerDisabled is {0}.",
                        dbgAttr.IsJITOptimizerDisabled);
                }
                else
                    Console.WriteLine("The Debuggable attribute " +
                        "could not be retrieved.");
            }
        }
    }
}

/*
 * Output:
 * The Debuggable attribute is defined for Module IsDef2CS.exe.
 * JITTrackingEnabled is True.
 * JITOptimizerDisabled is False.
 */

Комментарии

Предки 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

IsDefined(Assembly, Type)

Исходный код:
Attribute.CoreCLR.cs
Исходный код:
Attribute.CoreCLR.cs
Исходный код:
Attribute.CoreCLR.cs

Определяет, применены ли какие-либо настраиваемые атрибуты к сборке. Параметры определяют сборку и тип настраиваемого атрибута для поиска.

public static bool IsDefined (System.Reflection.Assembly element, Type attributeType);

Параметры

element
Assembly

Объект, производный от класса Assembly, который описывает многократно используемую коллекцию модулей.

attributeType
Type

Тип или базовый тип искомого настраиваемого атрибута.

Возвращаемое значение

true, если настраиваемый атрибут типа attributeType применен к элементу, указанному в параметре element; в противном случае — false.

Исключения

Параметр element или attributeType имеет значение null.

Тип attributeType не является производным объекта Attribute.

Примеры

В следующем примере кода показано использование IsDefined, принимая в Assembly качестве параметра .

using System;
using System.Reflection;

// Add an AssemblyDescription attribute
[assembly: AssemblyDescription("A sample description")]
namespace IsDef1CS
{
    public class DemoClass
    {
        static void Main(string[] args)
        {
            // Get the class type to access its metadata.
            Type clsType = typeof(DemoClass);
            // Get the assembly object.
            Assembly assy = clsType.Assembly;
            // Store the assembly's name.
            String assyName = assy.GetName().Name;
            // See if the Assembly Description is defined.
            bool isdef = Attribute.IsDefined(assy,
                typeof(AssemblyDescriptionAttribute));
            if (isdef)
            {
                // Affirm that the attribute is defined.
                Console.WriteLine("The AssemblyDescription attribute " +
                    "is defined for assembly {0}.", assyName);
                // Get the description attribute itself.
                AssemblyDescriptionAttribute adAttr =
                    (AssemblyDescriptionAttribute)Attribute.GetCustomAttribute(
                    assy, typeof(AssemblyDescriptionAttribute));
                // Display the description.
                if (adAttr != null)
                    Console.WriteLine("The description is \"{0}\".",
                        adAttr.Description);
                else
                    Console.WriteLine("The description could not " +
                        "be retrieved.");
            }
            else
                Console.WriteLine("The AssemblyDescription attribute is not " +
                    "defined for assembly {0}.", assyName);
        }
    }
}

/*
 * Output:
 * The AssemblyDescription attribute is defined for assembly IsDef1CS.
 * The description is "A sample description".
 */

Комментарии

Примечание

Начиная с платформа .NET Framework версии 2.0 этот метод возвращает значение true , если у сборки есть атрибуты безопасности, хранящиеся в новом формате метаданных. Сборки, скомпилированные с версией 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

IsDefined(ParameterInfo, Type)

Исходный код:
Attribute.CoreCLR.cs
Исходный код:
Attribute.CoreCLR.cs
Исходный код:
Attribute.CoreCLR.cs

Определяет, применены ли какие-либо настраиваемые атрибуты к параметру метода. Параметры определяют параметр метода и тип настраиваемого атрибута для поиска.

public static bool IsDefined (System.Reflection.ParameterInfo element, Type attributeType);

Параметры

element
ParameterInfo

Объект, являющийся производным от класса ParameterInfo, который описывает параметр члена класса.

attributeType
Type

Тип или базовый тип искомого настраиваемого атрибута.

Возвращаемое значение

true, если настраиваемый атрибут типа attributeType применен к элементу, указанному в параметре element; в противном случае — false.

Исключения

Параметр element или attributeType имеет значение null.

Тип attributeType не является производным объекта Attribute.

Примеры

В следующем примере кода показано использование IsDefined, принимая в ParameterInfo качестве параметра .

using System;
using System.Reflection;

namespace IsDef5CS
{
    public class TestClass
    {
        // Assign a ParamArray attribute to the parameter using the keyword.
        public void Method1(params String[] args)
        {}
    }

    public class DemoClass
    {
        static void Main(string[] args)
        {
            // Get the class type to access its metadata.
            Type clsType = typeof(TestClass);
            // Get the MethodInfo object for Method1.
            MethodInfo mInfo = clsType.GetMethod("Method1");
            // Get the ParameterInfo array for the method parameters.
            ParameterInfo[] pInfo = mInfo.GetParameters();
            if (pInfo != null)
            {
                // See if the ParamArray attribute is defined.
                bool isDef = Attribute.IsDefined(pInfo[0],
                                                 typeof(ParamArrayAttribute));
                // Display the result.
                Console.WriteLine("The ParamArray attribute {0} defined for " +
                                  "parameter {1} of method {2}.",
                                  isDef ? "is" : "is not",
                                  pInfo[0].Name,
                                  mInfo.Name);
            }
            else
                Console.WriteLine("The parameters information could " +
                            "not be retrieved for method {0}.", mInfo.Name);
        }
    }
}

/*
 * Output:
 * The ParamArray attribute is defined for parameter args of method Method1.
 */

Комментарии

Предки выполняют поиск настраиваемых 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