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

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


ParameterInfo Класс

Определение

Обнаруживает атрибуты параметра и обеспечивает доступ к его метаданным.

C#
public class ParameterInfo
C#
public class ParameterInfo : System.Reflection.ICustomAttributeProvider, System.Runtime.Serialization.IObjectReference
C#
public class ParameterInfo : System.Reflection.ICustomAttributeProvider
C#
[System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)]
[System.Serializable]
public class ParameterInfo : System.Reflection.ICustomAttributeProvider, System.Runtime.InteropServices._ParameterInfo
C#
[System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)]
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public class ParameterInfo : System.Reflection.ICustomAttributeProvider, System.Runtime.InteropServices._ParameterInfo
C#
[System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)]
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public class ParameterInfo : System.Reflection.ICustomAttributeProvider, System.Runtime.InteropServices._ParameterInfo, System.Runtime.Serialization.IObjectReference
Наследование
ParameterInfo
Атрибуты
Реализации

Примеры

В этом примере показано, как использовать различные классы отражения для анализа метаданных, содержащихся в сборке.

C#
using System;
using System.Reflection;

class Module1
{
    public static void Main()
    {
        // This variable holds the amount of indenting that
        // should be used when displaying each line of information.
        Int32 indent = 0;
        // Display information about the EXE assembly.
        Assembly a = typeof(Module1).Assembly;
        Display(indent, "Assembly identity={0}", a.FullName);
        Display(indent+1, "Codebase={0}", a.CodeBase);

        // Display the set of assemblies our assemblies reference.

        Display(indent, "Referenced assemblies:");
        foreach (AssemblyName an in a.GetReferencedAssemblies() )
        {
             Display(indent + 1, "Name={0}, Version={1}, Culture={2}, PublicKey token={3}", an.Name, an.Version, an.CultureInfo.Name, (BitConverter.ToString (an.GetPublicKeyToken())));
        }
        Display(indent, "");

        // Display information about each assembly loading into this AppDomain.
        foreach (Assembly b in AppDomain.CurrentDomain.GetAssemblies())
        {
            Display(indent, "Assembly: {0}", b);

            // Display information about each module of this assembly.
            foreach ( Module m in b.GetModules(true) )
            {
                Display(indent+1, "Module: {0}", m.Name);
            }

            // Display information about each type exported from this assembly.

            indent += 1;
            foreach ( Type t in b.GetExportedTypes() )
            {
                Display(0, "");
                Display(indent, "Type: {0}", t);

                // For each type, show its members & their custom attributes.

                indent += 1;
                foreach (MemberInfo mi in t.GetMembers() )
                {
                    Display(indent, "Member: {0}", mi.Name);
                    DisplayAttributes(indent, mi);

                    // If the member is a method, display information about its parameters.

                    if (mi.MemberType==MemberTypes.Method)
                    {
                        foreach ( ParameterInfo pi in ((MethodInfo) mi).GetParameters() )
                        {
                            Display(indent+1, "Parameter: Type={0}, Name={1}", pi.ParameterType, pi.Name);
                        }
                    }

                    // If the member is a property, display information about the property's accessor methods.
                    if (mi.MemberType==MemberTypes.Property)
                    {
                        foreach ( MethodInfo am in ((PropertyInfo) mi).GetAccessors() )
                        {
                            Display(indent+1, "Accessor method: {0}", am);
                        }
                    }
                }
                indent -= 1;
            }
            indent -= 1;
        }
    }

    // Displays the custom attributes applied to the specified member.
    public static void DisplayAttributes(Int32 indent, MemberInfo mi)
    {
        // Get the set of custom attributes; if none exist, just return.
        object[] attrs = mi.GetCustomAttributes(false);
        if (attrs.Length==0) {return;}

        // Display the custom attributes applied to this member.
        Display(indent+1, "Attributes:");
        foreach ( object o in attrs )
        {
            Display(indent+2, "{0}", o.ToString());
        }
    }

    // Display a formatted string indented by the specified amount.
    public static void Display(Int32 indent, string format, params object[] param)

    {
        Console.Write(new string(' ', indent*2));
        Console.WriteLine(format, param);
    }
}

//The output shown below is abbreviated.
//
//Assembly identity=ReflectionCS, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
//  Codebase=file:///C:/Documents and Settings/test/My Documents/Visual Studio 2005/Projects/Reflection/Reflection/obj/Debug/Reflection.exe
//Referenced assemblies:
//  Name=mscorlib, Version=2.0.0.0, Culture=, PublicKey token=B7-7A-5C-56-19-34-E0-89
//
//Assembly: mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
//  Module: mscorlib.dll
//  Module: mscorlib.dll
//  Module: mscorlib.dll
//  Module: mscorlib.dll
//  Module: mscorlib.dll
//  Module: mscorlib.dll
//  Module: mscorlib.dll
//  Module: mscorlib.dll
//  Module: mscorlib.dll
//  Module: mscorlib.dll
//  Module: mscorlib.dll
//  Module: mscorlib.dll
//  Module: mscorlib.dll
//  Module: mscorlib.dll
//
//  Type: System.Object
//    Member: GetType
//    Member: ToString
//    Member: Equals
//      Parameter: Type=System.Object, Name=obj
//    Member: Equals
//      Parameter: Type=System.Object, Name=objA
//      Parameter: Type=System.Object, Name=objB
//    Member: ReferenceEquals
//      Attributes:
//        System.Runtime.ConstrainedExecution.ReliabilityContractAttribute
//      Parameter: Type=System.Object, Name=objA
//      Parameter: Type=System.Object, Name=objB
//    Member: GetHashCode
//    Member: .ctor
//      Attributes:
//        System.Runtime.ConstrainedExecution.ReliabilityContractAttribute
//
//  Type: System.ICloneable
//    Member: Clone
//
//  Type: System.Collections.IEnumerable
//    Member: GetEnumerator
//      Attributes:
//        System.Runtime.InteropServices.DispIdAttribute
//
//  Type: System.Collections.ICollection
//    Member: CopyTo
//      Parameter: Type=System.Array, Name=array
//      Parameter: Type=System.Int32, Name=index
//    Member: get_Count
//    Member: get_SyncRoot
//    Member: get_IsSynchronized
//    Member: Count
//      Accessor method: Int32 get_Count()
//    Member: SyncRoot
//      Accessor method: System.Object get_SyncRoot()
//    Member: IsSynchronized
//      Accessor method: Boolean get_IsSynchronized()
//
//  Type: System.Collections.IList
//    Member: get_Item
//      Parameter: Type=System.Int32, Name=index
//    Member: set_Item
//      Parameter: Type=System.Int32, Name=index
//      Parameter: Type=System.Object, Name=value
//    Member: Add
//      Parameter: Type=System.Object, Name=value
//    Member: Contains
//      Parameter: Type=System.Object, Name=value
//    Member: Clear
//    Member: get_IsReadOnly
//    Member: get_IsFixedSize
//    Member: IndexOf
//      Parameter: Type=System.Object, Name=value
//    Member: Insert
//      Parameter: Type=System.Int32, Name=index
//      Parameter: Type=System.Object, Name=value
//    Member: Remove
//      Parameter: Type=System.Object, Name=value
//    Member: RemoveAt
//      Parameter: Type=System.Int32, Name=index
//    Member: Item
//      Accessor method: System.Object get_Item(Int32)
//      Accessor method: Void set_Item(Int32, System.Object)
//    Member: IsReadOnly
//      Accessor method: Boolean get_IsReadOnly()
//    Member: IsFixedSize
//      Accessor method: Boolean get_IsFixedSize()
//
//  Type: System.Array
//    Member: IndexOf
//      Parameter: Type=T[], Name=array
//      Parameter: Type=T, Name=value
//    Member: AsReadOnly
//      Parameter: Type=T[], Name=array
//    Member: Resize
//      Attributes:
//        System.Runtime.ConstrainedExecution.ReliabilityContractAttribute
//      Parameter: Type=T[]&, Name=array
//      Parameter: Type=System.Int32, Name=newSize
//    Member: BinarySearch
//      Attributes:
//        System.Runtime.ConstrainedExecution.ReliabilityContractAttribute
//      Parameter: Type=T[], Name=array
//      Parameter: Type=T, Name=value
//    Member: BinarySearch
//      Attributes:
//        System.Runtime.ConstrainedExecution.ReliabilityContractAttribute
//      Parameter: Type=T[], Name=array
//      Parameter: Type=T, Name=value
//      Parameter: Type=System.Collections.Generic.IComparer`1[T], Name=comparer

Комментарии

Используйте экземпляр для получения сведений ParameterInfo о типе данных параметра, значении по умолчанию и т. д.

GetParameters возвращает массив ParameterInfo объектов , представляющих параметры метода по порядку.

Конструкторы

ParameterInfo()

Инициализирует новый экземпляр класса ParameterInfo.

Поля

AttrsImpl

Атрибуты параметра.

ClassImpl

Тип Type параметра.

DefaultValueImpl

Значение параметра по умолчанию.

MemberImpl

Член, в котором реализовано данное поле.

NameImpl

Имя параметра.

PositionImpl

Отсчитываемая от нуля позиция параметра в списке параметров.

Свойства

Attributes

Получает атрибуты этого параметра.

CustomAttributes

Получает коллекцию, содержащую пользовательские атрибуты этого параметра.

DefaultValue

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

HasDefaultValue

Получает значение, указывающее, имеет ли данный параметр значение по умолчанию.

IsIn

Получает значение, указывающее, является ли этот параметр входным.

IsLcid

Возвращает значение, указывающее, является ли этот параметр идентификатором языка локализации (lcid).

IsOptional

Возвращает значение, указывающее, является ли этот параметр необязательным.

IsOut

Возвращает значение, указывающее, является ли этот параметр выходным.

IsRetval

Получает значение, показывающее, является ли этот параметр параметром Retval.

Member

Возвращает значение, указывающее член, в котором реализован данный параметр.

MetadataToken

Возвращает значение, определяющее этот параметр в метаданных.

Name

Возвращает имя параметра.

ParameterType

Получает тип Type данного параметра.

Position

Получает отсчитываемую от нуля позицию параметра в списке формальных параметров.

RawDefaultValue

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

Методы

Equals(Object)

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

(Унаследовано от Object)
GetCustomAttributes(Boolean)

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

GetCustomAttributes(Type, Boolean)

Получает настраиваемые атрибуты заданного типа или его производных типов, примененные к данному параметру.

GetCustomAttributesData()

Возвращает список объектов CustomAttributeData для текущего параметра, который можно использовать в контексте, предназначенном только для отражения.

GetHashCode()

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetModifiedParameterType()

Возвращает измененный тип объекта этого параметра.

GetOptionalCustomModifiers()

Возвращает необязательные настраиваемые модификаторы параметра.

GetRealObject(StreamingContext)
Устаревшие..

Возвращает реальный объект, который необходимо десериализовать, вместо объекта, задаваемого сериализованным потоком.

GetRequiredCustomModifiers()

Возвращает обязательные настраиваемые модификаторы параметра.

GetType()

Возвращает объект Type для текущего экземпляра.

(Унаследовано от Object)
IsDefined(Type, Boolean)

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

MemberwiseClone()

Создает неполную копию текущего объекта Object.

(Унаследовано от Object)
ToString()

Возвращает тип и имя параметра, представленные в виде строки.

ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)

Явные реализации интерфейса

_ParameterInfo.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Сопоставляет набор имен соответствующему набору идентификаторов диспетчеризации.

_ParameterInfo.GetTypeInfo(UInt32, UInt32, IntPtr)

Возвращает сведения о типе объекта, которые затем могут использоваться для получения сведений о типе интерфейса.

_ParameterInfo.GetTypeInfoCount(UInt32)

Возвращает количество предоставляемых объектом интерфейсов для доступа к сведениям о типе (0 или 1).

_ParameterInfo.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Предоставляет доступ к открытым свойствам и методам объекта.

ICustomAttributeProvider.GetCustomAttributes(Boolean)

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

ICustomAttributeProvider.GetCustomAttributes(Type, Boolean)

Возвращает массив настраиваемых атрибутов, определенных для этого элемента с учетом типа, или пустой массив, если отсутствуют настраиваемые атрибуты определенного типа.

ICustomAttributeProvider.IsDefined(Type, Boolean)

Указывает, сколько экземпляров attributeType определено для этого элемента.

Методы расширения

GetCustomAttribute(ParameterInfo, Type)

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

GetCustomAttribute(ParameterInfo, Type, Boolean)

Извлекает настраиваемый атрибут указанного типа, который применяется к указанному параметру и, при необходимости, проверяет предков этого параметра.

GetCustomAttribute<T>(ParameterInfo)

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

GetCustomAttribute<T>(ParameterInfo, Boolean)

Извлекает настраиваемый атрибут указанного типа, который применяется к указанному параметру и, при необходимости, проверяет предков этого параметра.

GetCustomAttributes(ParameterInfo)

Извлекает коллекцию настраиваемых атрибутов, примененных к указанному параметру.

GetCustomAttributes(ParameterInfo, Boolean)

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

GetCustomAttributes(ParameterInfo, Type)

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

GetCustomAttributes(ParameterInfo, Type, Boolean)

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

GetCustomAttributes<T>(ParameterInfo)

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

GetCustomAttributes<T>(ParameterInfo, Boolean)

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

IsDefined(ParameterInfo, Type)

Указывает, применены ли какие-либо пользовательские атрибуты заданного типа к указанному параметру.

IsDefined(ParameterInfo, Type, Boolean)

Указывает применены ли настраиваемые атрибуты указанного типа к указанному параметру и, при необходимости, применены ли они к его предкам.

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

Продукт Версии
.NET Core 1.0, Core 1.1, 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 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

Потокобезопасность

Данный тип потокобезопасен.