Classe PropertyInfo (System.Reflection)

Cambia visualizzazione:
ScriptFree
Riferimento a .NET Framework
Classe PropertyInfo
Il presente articolo è stato tradotto manualmente. Per visualizzare questa pagina e contemporaneamente visualizzarne il contenuto in lingua inglese, passare alla visualizzazione semplificata.

Individua gli attributi di una proprietà e consente di accedere ai relativi metadati.

Gerarchia di ereditarietà

System.Object
  System.Reflection.MemberInfo
    System.Reflection.PropertyInfo
      Microsoft.JScript.COMPropertyInfo
      System.Reflection.Emit.PropertyBuilder

Spazio dei nomi:  System.Reflection
Assembly:  mscorlib (in mscorlib.dll)
Sintassi

Visual Basic
<SerializableAttribute> _
<ComVisibleAttribute(True)> _
<ClassInterfaceAttribute(ClassInterfaceType.None)> _
<PermissionSetAttribute(SecurityAction.InheritanceDemand, Name := "FullTrust")> _
Public MustInherit Class PropertyInfo _
	Inherits MemberInfo _
	Implements _PropertyInfo
C#
[SerializableAttribute]
[ComVisibleAttribute(true)]
[ClassInterfaceAttribute(ClassInterfaceType.None)]
[PermissionSetAttribute(SecurityAction.InheritanceDemand, Name = "FullTrust")]
public abstract class PropertyInfo : MemberInfo, 
	_PropertyInfo
Visual C++
[SerializableAttribute]
[ComVisibleAttribute(true)]
[ClassInterfaceAttribute(ClassInterfaceType::None)]
[PermissionSetAttribute(SecurityAction::InheritanceDemand, Name = L"FullTrust")]
public ref class PropertyInfo abstract : public MemberInfo, 
	_PropertyInfo
F#
[<AbstractClass>]
[<SerializableAttribute>]
[<ComVisibleAttribute(true)>]
[<ClassInterfaceAttribute(ClassInterfaceType.None)>]
[<PermissionSetAttribute(SecurityAction.InheritanceDemand, Name = "FullTrust")>]
type PropertyInfo =  
    class
        inherit MemberInfo
        interface _PropertyInfo
    end

Il tipo PropertyInfo espone i seguenti membri.

Costruttori

  Nome Descrizione
Metodo protetto Supportato da XNA Framework PropertyInfo Inizializza una nuova istanza della classe PropertyInfo.
In alto
Proprietà

  Nome Descrizione
Proprietà pubblica Supportato da XNA Framework Attributes Ottiene gli attributi per questa proprietà.
Proprietà pubblica Supportato da XNA Framework 8z852kf5.PortableClassLibrary(it-it,VS.100).gif CanRead Ottiene un valore che indica se è possibile leggere la proprietà.
Proprietà pubblica Supportato da XNA Framework 8z852kf5.PortableClassLibrary(it-it,VS.100).gif CanWrite Ottiene un valore che indica se la proprietà è modificabile.
Proprietà pubblica Supportato da XNA Framework 8z852kf5.PortableClassLibrary(it-it,VS.100).gif DeclaringType Ottiene la classe che dichiara questo membro. (Ereditato da MemberInfo)
Proprietà pubblica Supportato da XNA Framework 8z852kf5.PortableClassLibrary(it-it,VS.100).gif IsSpecialName Ottiene un valore che indica se la proprietà è il nome speciale.
Proprietà pubblica Supportato da XNA Framework 8z852kf5.PortableClassLibrary(it-it,VS.100).gif MemberType Ottiene un valore MemberTypes che indica che questo membro è una proprietà. (Esegue l'override di MemberInfo.MemberType).
Proprietà pubblica MetadataToken Ottiene un valore che identifica un elemento di metadati. (Ereditato da MemberInfo)
Proprietà pubblica 8z852kf5.PortableClassLibrary(it-it,VS.100).gif Module Ottiene il modulo in cui viene definito il tipo che dichiara il membro rappresentato dall'oggetto MemberInfo corrente. (Ereditato da MemberInfo)
Proprietà pubblica Supportato da XNA Framework 8z852kf5.PortableClassLibrary(it-it,VS.100).gif Name Ottiene il nome del membro corrente. (Ereditato da MemberInfo)
Proprietà pubblica Supportato da XNA Framework 8z852kf5.PortableClassLibrary(it-it,VS.100).gif PropertyType Ottiene il tipo della proprietà.
Proprietà pubblica Supportato da XNA Framework 8z852kf5.PortableClassLibrary(it-it,VS.100).gif ReflectedType Ottiene l'oggetto classe utilizzato per ottenere questa istanza di MemberInfo. (Ereditato da MemberInfo)
In alto
Metodi

  Nome Descrizione
Metodo pubblico Supportato da XNA Framework 8z852kf5.PortableClassLibrary(it-it,VS.100).gif Equals Restituisce un valore che indica se l'istanza è uguale a un oggetto specificato. (Esegue l'override di MemberInfo.Equals(Object)).

In XNA Framework 3.0 questo membro viene ereditato da Object.Equals(Object).


In   questo membro viene ereditato da Object.Equals(Object).
Metodo protetto Supportato da XNA Framework 8z852kf5.PortableClassLibrary(it-it,VS.100).gif Finalize Consente a un oggetto di provare a liberare risorse ed eseguire altre operazioni di pulitura prima che l'oggetto stesso venga recuperato dalla procedura di Garbage Collection. (Ereditato da Object)
Metodo pubblico Supportato da XNA Framework 8z852kf5.PortableClassLibrary(it-it,VS.100).gif GetAccessors() Restituisce una matrice i cui elementi riflettono i metodi pubblici get, set e altre funzioni di accesso della proprietà riflesse dall'istanza corrente.
Metodo pubblico Supportato da XNA Framework 8z852kf5.PortableClassLibrary(it-it,VS.100).gif GetAccessors(Boolean) Restituisce una matrice i cui elementi riflettono i metodi pubblici e, se si specifica, quelli non pubblici get, set e altre funzioni di accesso della proprietà riflesse dall'istanza corrente.
Metodo pubblico GetConstantValue Restituisce un valore letterale associato da un compilatore alla proprietà.
Metodo pubblico Supportato da XNA Framework 8z852kf5.PortableClassLibrary(it-it,VS.100).gif GetCustomAttributes(Boolean) Se sottoposto a override in una classe derivata, restituisce una matrice di tutti gli attributi personalizzati applicati a questo membro. (Ereditato da MemberInfo)
Metodo pubblico Supportato da XNA Framework 8z852kf5.PortableClassLibrary(it-it,VS.100).gif GetCustomAttributes(Type, Boolean) Se sottoposto a override in una classe derivata, restituisce una matrice di attributi personalizzati applicati a questo membro e identificati da Type. (Ereditato da MemberInfo)
Metodo pubblico GetCustomAttributesData Restituisce un elenco di oggetti CustomAttributeData che rappresentano i dati sugli attributi applicati al membro di destinazione. (Ereditato da MemberInfo)
Metodo pubblico Supportato da XNA Framework 8z852kf5.PortableClassLibrary(it-it,VS.100).gif GetGetMethod() Restituisce la funzione di accesso pubblica get per questa proprietà.
Metodo pubblico Supportato da XNA Framework 8z852kf5.PortableClassLibrary(it-it,VS.100).gif GetGetMethod(Boolean) Quando viene sottoposto a override in una classe derivata, restituisce la funzione di accesso get pubblica o non pubblica per la proprietà.
Metodo pubblico Supportato da XNA Framework 8z852kf5.PortableClassLibrary(it-it,VS.100).gif GetHashCode Restituisce il codice hash per questa istanza. (Esegue l'override di MemberInfo.GetHashCode()).

In XNA Framework 3.0 questo membro viene ereditato da Object.GetHashCode().


In   questo membro viene ereditato da Object.GetHashCode().
Metodo pubblico Supportato da XNA Framework 8z852kf5.PortableClassLibrary(it-it,VS.100).gif GetIndexParameters Quando viene sottoposto a override in una classe derivata, restituisce una matrice di tutti i parametri di indice per la proprietà.
Metodo pubblico GetOptionalCustomModifiers Restituisce una matrice di tipi che rappresentano i modificatori personalizzati facoltativi della proprietà.
Metodo pubblico GetRawConstantValue Restituisce un valore letterale associato da un compilatore alla proprietà.
Metodo pubblico GetRequiredCustomModifiers Restituisce una matrice di tipi che rappresentano i modificatori personalizzati obbligatori della proprietà.
Metodo pubblico Supportato da XNA Framework 8z852kf5.PortableClassLibrary(it-it,VS.100).gif GetSetMethod() Restituisce la funzione di accesso pubblica set per questa proprietà.
Metodo pubblico Supportato da XNA Framework 8z852kf5.PortableClassLibrary(it-it,VS.100).gif GetSetMethod(Boolean) Quando viene sottoposto a override in una classe derivata, restituisce la funzione di accesso set per questa proprietà.
Metodo pubblico Supportato da XNA Framework 8z852kf5.PortableClassLibrary(it-it,VS.100).gif GetType Ottiene l'oggetto Type dell'istanza corrente. (Ereditato da Object)
Metodo pubblico Supportato da XNA Framework 8z852kf5.PortableClassLibrary(it-it,VS.100).gif GetValue(Object, Object[]) Restituisce il valore della proprietà con valori di indice facoltativi per le proprietà indicizzate.
Metodo pubblico Supportato da XNA Framework GetValue(Object, BindingFlags, Binder, Object[], CultureInfo) Quando viene sottoposto a override in una classe derivata, restituisce il valore di una proprietà con l'associazione, l'indice e l'oggetto CultureInfo specificati.
Metodo pubblico Supportato da XNA Framework 8z852kf5.PortableClassLibrary(it-it,VS.100).gif IsDefined Quando se ne effettua l'override in una classe derivata, indica se a questo membro sono applicati uno o più attributi del tipo specificato o dei tipi derivati. (Ereditato da MemberInfo)
Metodo protetto Supportato da XNA Framework 8z852kf5.PortableClassLibrary(it-it,VS.100).gif MemberwiseClone Consente di creare una copia dei riferimenti dell'oggetto Object corrente. (Ereditato da Object)
Metodo pubblico Supportato da XNA Framework 8z852kf5.PortableClassLibrary(it-it,VS.100).gif SetValue(Object, Object, Object[]) Imposta il valore della proprietà con valori di indice facoltativi per le proprietà dell'indice.
Metodo pubblico Supportato da XNA Framework SetValue(Object, Object, BindingFlags, Binder, Object[], CultureInfo) Quando viene sottoposto a override in una classe derivata, imposta il valore della proprietà dell'oggetto specificato sul valore determinato.
Metodo pubblico Supportato da XNA Framework 8z852kf5.PortableClassLibrary(it-it,VS.100).gif ToString Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object)
In alto
Operatori

  Nome Descrizione
Operatore pubblico Membro statico Equality Indica se due oggetti PropertyInfo sono uguali o meno.
Operatore pubblico Membro statico Inequality Indica se due oggetti PropertyInfo non sono uguali.
In alto
Implementazioni esplicite dell'interfaccia

  Nome Descrizione
Implementazione esplicita dell'interfaccia Metodo privato _MemberInfo.GetIDsOfNames Esegue il mapping di un set di nomi a un set corrispondente di ID di invio. (Ereditato da MemberInfo)
Implementazione esplicita dell'interfaccia Metodo privato _MemberInfo.GetType Ottiene un oggetto Type che rappresenta la classe MemberInfo. (Ereditato da MemberInfo)
Implementazione esplicita dell'interfaccia Metodo privato _MemberInfo.GetTypeInfo Recupera le informazioni sul tipo relative a un oggetto che può quindi essere utilizzato per ottenere informazioni sul tipo relative a un'interfaccia. (Ereditato da MemberInfo)
Implementazione esplicita dell'interfaccia Metodo privato _MemberInfo.GetTypeInfoCount Recupera il numero delle interfacce di informazioni di tipo fornite da un oggetto (0 o 1). (Ereditato da MemberInfo)
Implementazione esplicita dell'interfaccia Metodo privato _MemberInfo.Invoke Fornisce l'accesso a proprietà e metodi esposti da un oggetto. (Ereditato da MemberInfo)
Implementazione esplicita dell'interfaccia Metodo privato _PropertyInfo.GetIDsOfNames Esegue il mapping di un set di nomi a un set corrispondente di ID di invio.
Implementazione esplicita dell'interfaccia Metodo privato _PropertyInfo.GetType Ottiene un oggetto Type che rappresenta il tipo PropertyInfo.
Implementazione esplicita dell'interfaccia Metodo privato _PropertyInfo.GetTypeInfo Recupera le informazioni sui tipi per un oggetto, che può quindi essere utilizzato per ottenere le informazioni sui tipi per un'interfaccia.
Implementazione esplicita dell'interfaccia Metodo privato _PropertyInfo.GetTypeInfoCount Recupera il numero delle interfacce di informazioni di tipo fornite da un oggetto (0 o 1).
Implementazione esplicita dell'interfaccia Metodo privato _PropertyInfo.Invoke Fornisce l'accesso a proprietà e metodi esposti da un oggetto.
In alto
Note

Le proprietà sono logicamente equivalenti ai campi. Una proprietà è un aspetto denominato dello stato di un oggetto, il cui valore è generalmente accessibile tramite le funzioni di accesso get e set. Le proprietà possono essere di sola lettura, nel qual caso la funzione di accesso Set non è supportata.

Nota Nota

Per stabilire se una proprietà è static, è necessario ottenere le MethodInfo per la funzione di accesso get o set, chiamando il metodo GetGetMethod o il metodo GetSetMethod ed esaminandone la proprietà IsStatic.

Diversi metodi nella classe presuppongono che la funzione di accesso get e i metodi della funzione di accesso set di una proprietà abbiano determinati formati. Le firme dei metodi get e set devono corrispondere alla seguente convenzione.

  • Il tipo restituito dal metodo get e l'ultimo argomento del metodo set devono essere identici. Questo è il tipo della proprietà.

  • I metodi get e set devono avere lo stesso numero, tipo e ordine di indici.

Se questo formato non viene rispettato, il comportamento dei metodi GetValue e SetValue non è definito.

La chiamata del metodo ICustomAttributeProvider.GetCustomAttributes su PropertyInfo quando il parametro inherit di GetCustomAttributes è true non segue la gerarchia dei tipi. Utilizzare System.Attribute per ereditare gli attributi personalizzati.

Note per gli eredi

Quando si eredita da PropertyInfo, eseguire l'override dei seguenti membri: GetValue, SetValue, GetAccessors, GetGetMethod, GetSetMethod e GetIndexParameters.

Esempi

In questo esempio viene illustrato come utilizzare varie classi reflection per analizzare i metadati contenuti in un assembly.

Nota Nota

Con questo esempio vengono generate circa 55.000 righe di dati che è possibile reindirizzare a un file di testo dal prompt dei comandi, come segue: example.exe > propertyinfo.txt

Visual Basic

Imports System
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] = System.Reflection.Assembly.GetExecutingAssembly()
        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()
'


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 = System.Reflection.Assembly.GetExecutingAssembly();
        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


Visual C++

using namespace System;
using namespace System::Reflection;

static void Display(Int32 indent, String^ format, ... array<Object^>^param) 
{
    Console::Write("{0}", gcnew String (' ', indent));
    Console::WriteLine(format, param);
}
	
// Displays the custom attributes applied to the specified member.
static void DisplayAttributes(Int32 indent, MemberInfo^ mi)
{
    // Get the set of custom attributes; if none exist, just return.
    array<Object^>^attrs = mi->GetCustomAttributes(false);
		
    if (attrs->Length==0)
    {
        return;          
    }
		
    // Display the custom attributes applied to this member.
    Display(indent+1, "Attributes:");
    for each ( Object^ o in attrs )
    {
        Display(indent*2, "{0}", o);
    }				
}

void main()
{
    try
    {
        // 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 = System::Reflection::Assembly::GetExecutingAssembly();
		
        Display(indent, "Assembly identity={0}", gcnew array<Object^> {a->FullName});
        Display(indent+1, "Codebase={0}", gcnew array<Object^> {a->CodeBase});

        // Display the set of assemblies our assemblies reference.

        Display(indent, "Referenced assemblies:"); 

        for each ( AssemblyName^ an in a->GetReferencedAssemblies() )
        {
            Display(indent + 1, "Name={0}, Version={1}, Culture={2}, PublicKey token={3}", gcnew array<Object^> {an->Name, an->Version, an->CultureInfo, (BitConverter::ToString(an->GetPublicKeyToken()))});
        }
        Display(indent, "");  
        // Display information about each assembly loading into this AppDomain. 
        for each ( Assembly^ b in AppDomain::CurrentDomain->GetAssemblies()) 
        {
            Display(indent, "Assembly: {0}", gcnew array<Object^> {b});
            // Display information about each module of this assembly.

            for each ( Module^ m in b->GetModules(true) ) 
            {
                Display(indent+1, "Module: {0}", gcnew array<Object^> {m->Name});
            }
            // Display information about each type exported from this assembly.

            indent += 1; 
            for each ( Type^ t in b->GetExportedTypes() ) 
            {
                Display(0, "");  
                Display(indent, "Type: {0}", gcnew array<Object^> {t}); 

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

                indent += 1; 
                for each (MemberInfo^ mi in t->GetMembers() )
                {
                    Display(indent, "Member: {0}", gcnew array<Object^> {mi->Name}); 
                    DisplayAttributes(indent, mi);

                    // If the member is a method, display information about its parameters.         
                    if (mi->MemberType==MemberTypes::Method) 
                    {
					
                        for each ( ParameterInfo^ pi in (((MethodInfo^) mi)->GetParameters()))
                        {
                            Display(indent+1, "Parameter: Type={0}, Name={1}", gcnew array<Object^> {pi->ParameterType, pi->Name}); 
                        }
                    }

                    // If the member is a property, display information about the property's accessor methods.
                    if (mi->MemberType==MemberTypes::Property) 
                    {
                        for each ( MethodInfo^ am in (((PropertyInfo^) mi)->GetAccessors()) )
                        {
                            Display(indent+1, "Accessor method: {0}", gcnew array<Object^> {am});
                        }
                    }
                }
                // Display a formatted string indented by the specified amount.               
                indent -= 1;
            }
            indent -= 1;
        }
    }
    catch (Exception^ e)
    {
        Console::WriteLine(e->Message);
    }
}

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


Informazioni sulla versione

.NET Framework

Supportato in: 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Supportato in: 4, 3.5 SP1

Supportato in:
Sicurezza di .NET Framework

Piattaforme

Windows 7, Windows Vista SP1 o versione successiva, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (componenti di base del server non supportati), Windows Server 2008 R2 (componenti di base del server supportati con SP1 o versione successiva), Windows Server 2003 SP2

.NET Framework non supporta tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.
Codice thread safe

Questo tipo è thread-safe.

Vedere anche

Riferimenti