ParameterInfo Класс

Определение

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

public ref class ParameterInfo
public ref class ParameterInfo : System::Reflection::ICustomAttributeProvider, System::Runtime::Serialization::IObjectReference
public ref class ParameterInfo : System::Reflection::ICustomAttributeProvider
public ref class ParameterInfo : System::Reflection::ICustomAttributeProvider, System::Runtime::InteropServices::_ParameterInfo
public ref class ParameterInfo : System::Reflection::ICustomAttributeProvider, System::Runtime::InteropServices::_ParameterInfo, System::Runtime::Serialization::IObjectReference
public class ParameterInfo
public class ParameterInfo : System.Reflection.ICustomAttributeProvider, System.Runtime.Serialization.IObjectReference
public class ParameterInfo : System.Reflection.ICustomAttributeProvider
[System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)]
[System.Serializable]
public class ParameterInfo : System.Reflection.ICustomAttributeProvider, System.Runtime.InteropServices._ParameterInfo
[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.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
type ParameterInfo = class
type ParameterInfo = class
    interface ICustomAttributeProvider
    interface IObjectReference
type ParameterInfo = class
    interface ICustomAttributeProvider
[<System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)>]
[<System.Serializable>]
type ParameterInfo = class
    interface _ParameterInfo
    interface ICustomAttributeProvider
[<System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)>]
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type ParameterInfo = class
    interface _ParameterInfo
    interface ICustomAttributeProvider
[<System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)>]
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type ParameterInfo = class
    interface _ParameterInfo
    interface ICustomAttributeProvider
    interface IObjectReference
Public Class ParameterInfo
Public Class ParameterInfo
Implements ICustomAttributeProvider, IObjectReference
Public Class ParameterInfo
Implements ICustomAttributeProvider
Public Class ParameterInfo
Implements _ParameterInfo, ICustomAttributeProvider
Public Class ParameterInfo
Implements _ParameterInfo, ICustomAttributeProvider, IObjectReference
Наследование
ParameterInfo
Атрибуты
Реализации

Примеры

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

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
Imports System.Reflection

Module Module1
    Sub Main()
        ' This variable holds the amount of indenting that 
        ' should be used when displaying each line of information.
        Dim indent As Int32 = 0
        ' Display information about the EXE assembly.
        Dim a As Assembly = GetType(Module1).Assembly
        Display(indent, "Assembly identity={0}", a.FullName)
        Display(indent + 1, "Codebase={0}", a.CodeBase)

        ' Display the set of assemblies our assemblies reference.
        Dim an As AssemblyName
        Display(indent, "Referenced assemblies:")
        For Each 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))
        Next
        Display(indent, "")

        ' Display information about each assembly loading into this AppDomain.
        For Each a In AppDomain.CurrentDomain.GetAssemblies()
            Display(indent, "Assembly: {0}", a)

            ' Display information about each module of this assembly.
            Dim m As [Module]
            For Each m In a.GetModules(True)
                Display(indent + 1, "Module: {0}", m.Name)
            Next

            ' Display information about each type exported from this assembly.
            Dim t As Type
            indent += 1
            For Each t In a.GetExportedTypes()
                Display(0, "")
                Display(indent, "Type: {0}", t)

                ' For each type, show its members & their custom attributes.
                Dim mi As MemberInfo
                indent += 1
                For Each mi In t.GetMembers()
                    Display(indent, "Member: {0}", mi.Name)
                    DisplayAttributes(indent, mi)

                    ' If the member is a method, display information about its parameters.
                    Dim pi As ParameterInfo
                    If mi.MemberType = MemberTypes.Method Then
                        For Each pi In CType(mi, MethodInfo).GetParameters()
                            Display(indent + 1, "Parameter: Type={0}, Name={1}", pi.ParameterType, pi.Name)
                        Next
                    End If

                    ' If the member is a property, display information about the property's accessor methods.
                    If mi.MemberType = MemberTypes.Property Then
                        Dim am As MethodInfo
                        For Each am In CType(mi, PropertyInfo).GetAccessors()
                            Display(indent + 1, "Accessor method: {0}", am)
                        Next
                    End If
                Next
                indent -= 1
            Next
            indent -= 1
        Next
    End Sub

    ' Displays the custom attributes applied to the specified member.
    Sub DisplayAttributes(ByVal indent As Int32, ByVal mi As MemberInfo)
        ' Get the set of custom attributes; if none exist, just return.
        Dim attrs() As Object = mi.GetCustomAttributes(False)
        If attrs.Length = 0 Then Return

        ' Display the custom attributes applied to this member.
        Display(indent + 1, "Attributes:")
        Dim o As Object
        For Each o In attrs
            Display(indent + 2, "{0}", o.ToString())
        Next
    End Sub

    ' Display a formatted string indented by the specified amount.
    Sub Display(ByVal indent As Int32, ByVal format As String, ByVal ParamArray params() As Object)
        Console.Write(New String(" "c, indent * 2))
        Console.WriteLine(format, params)
    End Sub
End Module

'The output shown below is abbreviated.
'
'Assembly identity=Reflection, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
'  Codebase=file:///C:/Reflection.exe
'Referenced assemblies:
'  Name=mscorlib, Version=1.0.5000.0, Culture=, PublicKey token=B7-7A-5C-56-19-34-E0-89
'  Name=Microsoft.VisualBasic, Version=7.0.5000.0, Culture=, PublicKey token=B0-3F-5F-7F-11-D5-0A-3A
'
'Assembly: mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
'  Module: mscorlib.dll
'  Module: prc.nlp
'  Module: prcp.nlp
'  Module: ksc.nlp
'  Module: ctype.nlp
'  Module: xjis.nlp
'  Module: bopomofo.nlp
'  Module: culture.nlp
'  Module: region.nlp
'  Module: sortkey.nlp
'  Module: charinfo.nlp
'  Module: big5.nlp
'  Module: sorttbls.nlp
'  Module: l_intl.nlp
'  Module: l_except.nlp
'
'  Type: System.Object
'    Member: GetHashCode
'    Member: Equals
'      Parameter: Type=System.Object, Name=obj
'    Member: ToString
'    Member: Equals
'      Parameter: Type=System.Object, Name=objA
'      Parameter: Type=System.Object, Name=objB
'    Member: ReferenceEquals
'      Parameter: Type=System.Object, Name=objA
'      Parameter: Type=System.Object, Name=objB
'    Member: GetType
'    Member: .ctor
'
'  Type: System.ICloneable
'    Member: Clone
'
'  Type: System.Collections.IEnumerable
'    Member: GetEnumerator
'      Attributes:
'        System.Runtime.InteropServices.DispIdAttribute
'
'  Type: System.Collections.ICollection
'    Member: get_IsSynchronized
'    Member: get_SyncRoot
'    Member: get_Count
'    Member: CopyTo
'      Parameter: Type=System.Array, Name=array
'      Parameter: Type=System.Int32, Name=index
'    Member: Count
'      Accessor method: Int32 get_Count()
'    Member: SyncRoot
'      Accessor method: System.Object get_SyncRoot()
'    Member: IsSynchronized
'      Accessor method: Boolean get_IsSynchronized()
'

Комментарии

Используйте экземпляр для получения сведений 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, Boolean)

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

GetCustomAttribute(ParameterInfo, Type)

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

GetCustomAttribute<T>(ParameterInfo, Boolean)

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

GetCustomAttribute<T>(ParameterInfo)

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

GetCustomAttributes(ParameterInfo, Boolean)

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

GetCustomAttributes(ParameterInfo, Type, Boolean)

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

GetCustomAttributes(ParameterInfo, Type)

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

GetCustomAttributes(ParameterInfo)

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

GetCustomAttributes<T>(ParameterInfo, Boolean)

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

GetCustomAttributes<T>(ParameterInfo)

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

IsDefined(ParameterInfo, Type, Boolean)

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

IsDefined(ParameterInfo, Type)

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

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

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

Этот тип является потокобезопасной.