ParameterInfo Classe

Definição

Descobre os atributos de um parâmetro e fornece acesso a metadados de parâmetros.

public ref class ParameterInfo
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 ref class ParameterInfo : System::Reflection::ICustomAttributeProvider
public ref class ParameterInfo : System::Reflection::ICustomAttributeProvider, System::Runtime::Serialization::IObjectReference
public class ParameterInfo
[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
public class ParameterInfo : System.Reflection.ICustomAttributeProvider
public class ParameterInfo : System.Reflection.ICustomAttributeProvider, System.Runtime.Serialization.IObjectReference
type ParameterInfo = class
[<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
type ParameterInfo = class
    interface ICustomAttributeProvider
type ParameterInfo = class
    interface ICustomAttributeProvider
    interface IObjectReference
Public Class ParameterInfo
Public Class ParameterInfo
Implements _ParameterInfo, ICustomAttributeProvider
Public Class ParameterInfo
Implements _ParameterInfo, ICustomAttributeProvider, IObjectReference
Public Class ParameterInfo
Implements ICustomAttributeProvider
Public Class ParameterInfo
Implements ICustomAttributeProvider, IObjectReference
Herança
ParameterInfo
Atributos
Implementações

Exemplos

Este exemplo mostra como usar várias classes de reflexão para analisar os metadados contidos numa assembleia.

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()
'

Observações

Use uma instância de ParameterInfo para obter informações sobre o tipo de dado do parâmetro, valor padrão, e assim por diante.

GetParameters devolve um array de ParameterInfo objetos que representam os parâmetros de um método, por ordem.

Construtores

Name Description
ParameterInfo()

Inicializa uma nova instância da ParameterInfo classe.

Campos

Name Description
AttrsImpl

Os atributos do parâmetro.

ClassImpl

O Type do parâmetro.

DefaultValueImpl

O valor padrão do parâmetro.

MemberImpl

O elemento em que o campo é implementado.

NameImpl

O nome do parâmetro.

PositionImpl

A posição baseada em zero do parâmetro na lista de parâmetros.

Propriedades

Name Description
Attributes

Obtém os atributos deste parâmetro.

CustomAttributes

Obtém uma coleção que contém os atributos personalizados deste parâmetro.

DefaultValue

Recebe um valor que indica o valor padrão se o parâmetro tiver um valor predefinido.

HasDefaultValue

Obtém um valor que indica se este parâmetro tem um valor predefinido.

IsIn

Recebe um valor que indica se este é um parâmetro de entrada.

IsLcid

Recebe um valor que indica se este parâmetro é um identificador local (lcid).

IsOptional

Recebe um valor que indica se este parâmetro é opcional.

IsOut

Recebe um valor que indica se este é um parâmetro de saída.

IsRetval

Recebe um valor que indica se este é um Retval parâmetro.

Member

Obtém um valor que indica o elemento em que o parâmetro está implementado.

MetadataToken

Obtém um valor que identifica este parâmetro nos metadados.

Name

Obtém o nome do parâmetro.

ParameterType

Tira o Type valor deste parâmetro.

Position

Obtém a posição baseada em zero do parâmetro na lista formal de parâmetros.

RawDefaultValue

Recebe um valor que indica o valor padrão se o parâmetro tiver um valor predefinido.

Métodos

Name Description
Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetCustomAttributes(Boolean)

Obtém todos os atributos personalizados definidos neste parâmetro.

GetCustomAttributes(Type, Boolean)

Obtém os atributos personalizados do tipo especificado ou dos seus tipos derivados que são aplicados a este parâmetro.

GetCustomAttributesData()

Devolve uma lista de CustomAttributeData objetos para o parâmetro atual, que pode ser usado no contexto apenas de reflexão.

GetHashCode()

Serve como função de hash predefinida.

(Herdado de Object)
GetOptionalCustomModifiers()

Recebe os modificadores personalizados opcionais do parâmetro.

GetRealObject(StreamingContext)

Devolve o objeto real que deve ser desserializado em vez do objeto que o fluxo serializado especifica.

GetRequiredCustomModifiers()

Obtém os modificadores personalizados necessários do parâmetro.

GetType()

Obtém o Type da instância atual.

(Herdado de Object)
IsDefined(Type, Boolean)

Determina se o atributo personalizado do tipo especificado ou dos seus tipos derivados é aplicado a este parâmetro.

MemberwiseClone()

Cria uma cópia superficial do atual Object.

(Herdado de Object)
ToString()

Obtém o tipo de parâmetro e o nome representados como uma cadeia.

ToString()

Devolve uma cadeia que representa o objeto atual.

(Herdado de Object)

Implementações de Interface Explícita

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

Mapeia um conjunto de nomes para um conjunto correspondente de identificadores de despacho.

_ParameterInfo.GetTypeInfo(UInt32, UInt32, IntPtr)

Recupera as informações de tipo de um objeto, que podem ser usadas para obter as informações de tipo para uma interface.

_ParameterInfo.GetTypeInfoCount(UInt32)

Recupera o número de interfaces de informações de tipo que um objeto fornece (0 ou 1).

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

Proporciona acesso a propriedades e métodos expostos por um objeto.

ICustomAttributeProvider.GetCustomAttributes(Boolean)

Devolve um array de todos os atributos personalizados definidos neste membro, excluindo atributos nomeados, ou um array vazio se não existirem atributos personalizados.

ICustomAttributeProvider.GetCustomAttributes(Type, Boolean)

Devolve um array de atributos personalizados definidos neste membro, identificados pelo tipo, ou um array vazio se não existirem atributos personalizados desse tipo.

ICustomAttributeProvider.IsDefined(Type, Boolean)

Indica se uma ou mais instâncias de attributeType estão definidas neste membro.

Métodos da Extensão

Name Description
GetCustomAttribute(ParameterInfo, Type, Boolean)

Recupera um atributo personalizado de um tipo especificado que é aplicado a um parâmetro especificado e, opcionalmente, inspeciona os antepassados desse parâmetro.

GetCustomAttribute(ParameterInfo, Type)

Recupera um atributo personalizado de um tipo especificado que é aplicado a um parâmetro especificado.

GetCustomAttribute<T>(ParameterInfo, Boolean)

Recupera um atributo personalizado de um tipo especificado que é aplicado a um parâmetro especificado e, opcionalmente, inspeciona os antepassados desse parâmetro.

GetCustomAttribute<T>(ParameterInfo)

Recupera um atributo personalizado de um tipo especificado que é aplicado a um parâmetro especificado.

GetCustomAttributes(ParameterInfo, Boolean)

Recupera uma coleção de atributos personalizados que são aplicados a um parâmetro especificado e, opcionalmente, inspeciona os antecessores desse parâmetro.

GetCustomAttributes(ParameterInfo, Type, Boolean)

Recupera uma coleção de atributos personalizados de um tipo especificado que são aplicados a um parâmetro especificado e, opcionalmente, inspeciona os antecessores desse parâmetro.

GetCustomAttributes(ParameterInfo, Type)

Recupera uma coleção de atributos personalizados de um tipo especificado que são aplicados a um parâmetro especificado.

GetCustomAttributes(ParameterInfo)

Recupera uma coleção de atributos personalizados que são aplicados a um parâmetro especificado.

GetCustomAttributes<T>(ParameterInfo, Boolean)

Recupera uma coleção de atributos personalizados de um tipo especificado que são aplicados a um parâmetro especificado e, opcionalmente, inspeciona os antecessores desse parâmetro.

GetCustomAttributes<T>(ParameterInfo)

Recupera uma coleção de atributos personalizados de um tipo especificado que são aplicados a um parâmetro especificado.

IsDefined(ParameterInfo, Type, Boolean)

Indica se atributos personalizados de um tipo especificado são aplicados a um determinado parâmetro e, opcionalmente, aplicados aos seus antecessores.

IsDefined(ParameterInfo, Type)

Indica se atributos personalizados de um tipo especificado são aplicados a um parâmetro especificado.

Aplica-se a

Segurança de Thread

Este tipo é seguro para fios.