AssemblyName Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Descrive l'identità univoca di un assembly completa.
public ref class AssemblyName sealed
public ref class AssemblyName sealed : ICloneable, System::Runtime::Serialization::IDeserializationCallback, System::Runtime::Serialization::ISerializable
public ref class AssemblyName sealed : ICloneable, System::Runtime::InteropServices::_AssemblyName, System::Runtime::Serialization::IDeserializationCallback, System::Runtime::Serialization::ISerializable
public sealed class AssemblyName
public sealed class AssemblyName : ICloneable, System.Runtime.Serialization.IDeserializationCallback, System.Runtime.Serialization.ISerializable
[System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)]
[System.Serializable]
public sealed class AssemblyName : ICloneable, System.Runtime.InteropServices._AssemblyName, System.Runtime.Serialization.IDeserializationCallback, System.Runtime.Serialization.ISerializable
[System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)]
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class AssemblyName : ICloneable, System.Runtime.InteropServices._AssemblyName, System.Runtime.Serialization.IDeserializationCallback, System.Runtime.Serialization.ISerializable
type AssemblyName = class
type AssemblyName = class
interface ICloneable
interface IDeserializationCallback
interface ISerializable
type AssemblyName = class
interface ICloneable
interface ISerializable
interface IDeserializationCallback
[<System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)>]
[<System.Serializable>]
type AssemblyName = class
interface _AssemblyName
interface ICloneable
interface ISerializable
interface IDeserializationCallback
[<System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)>]
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type AssemblyName = class
interface _AssemblyName
interface ICloneable
interface ISerializable
interface IDeserializationCallback
Public NotInheritable Class AssemblyName
Public NotInheritable Class AssemblyName
Implements ICloneable, IDeserializationCallback, ISerializable
Public NotInheritable Class AssemblyName
Implements _AssemblyName, ICloneable, IDeserializationCallback, ISerializable
- Ereditarietà
-
AssemblyName
- Attributi
- Implementazioni
Esempio
In questo esempio viene illustrato come usare varie classi di reflection per analizzare i metadati contenuti in un assembly.
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()
'
Commenti
L'oggetto AssemblyName contiene informazioni su un assembly, che è possibile utilizzare per eseguire l'associazione a tale assembly. L'identità di un assembly è costituita dai seguenti elementi:
- Nome semplice.
- Numero di versione.
- Coppia di chiavi crittografiche.
- Impostazioni cultura supportate.
Il nome semplice è in genere il nome del file manifesto senza l'estensione. La coppia di chiavi include una chiave pubblica e privata, usata per creare firme con nome sicuro per gli assembly.
Tutti i compilatori che supportano Common Language Runtime generano il nome semplice di una classe nidificata e la reflection costruisce un nome sbrogliato quando viene eseguita una query, in base alle convenzioni seguenti.
| Delimitatore | Meaning |
|---|---|
| Barra rovesciata (\) | Carattere di escape. |
| Virgola (,) | Precede il nome dell'assembly. |
| Segno più (+) | Precede una classe nidificata. |
Ad esempio, il nome completo di una classe potrebbe essere simile al seguente:
ContainingClass+NestedClass,MyAssembly
"++" diventa "\+\+" e "\" diventa "\\".
Questo nome completo può essere salvato in modo permanente e usato in un secondo momento per caricare .Type Per cercare e caricare un Typeoggetto , usare GetType solo con il nome del tipo o con il nome completo dell'assembly. GetType con il nome del tipo cercherà Type solo nell'assembly del chiamante e quindi nell'assembly di sistema. GetType con il nome del tipo completo dell'assembly cercherà in Type qualsiasi assembly.
Un valore specificato AssemblyName deve avere il nome, le impostazioni cultura, la chiave pubblica o il token di chiave pubblica, la versione principale, la versione secondaria, il numero di build e i parametri del numero di revisione. Gli ultimi quattro sono inclusi nel Version tipo .
Per creare un nome semplice, creare un AssemblyName oggetto usando il costruttore senza parametri e impostare .Name Le altre proprietà sono facoltative.
Per creare un nome sicuro completo, creare un AssemblyName oggetto usando il costruttore senza parametri e impostare e NameKeyPair. Le altre proprietà sono facoltative. Usare SetPublicKey e SetPublicKeyToken per impostare la chiave pubblica e il nome sicuro. La firma con nome sicuro usa sempre l'algoritmo SHA1 hash.
Per assicurarsi che i nomi vengano costruiti correttamente, usare le proprietà seguenti:
È anche possibile ottenere il nome usando l'opzione /l con il Gacutil.exe (Strumento Global Assembly Cache).
Per un nome sicuro parzialmente specificato, creare un AssemblyName oggetto usando il costruttore senza parametri e impostare il nome e la chiave pubblica. Un assembly creato usando tale oggetto AssemblyName può essere firmato in un secondo momento usando Assembly Linker (Al.exe).
È possibile specificare una chiave pubblica e un oggetto KeyPair con valori incoerenti. Questo può essere utile negli scenari di sviluppo. In questo caso, la chiave pubblica recuperata con GetPublicKey specifica la chiave pubblica corretta, mentre KeyPair specifica le chiavi pubbliche e private usate durante lo sviluppo. Quando il runtime rileva una mancata corrispondenza tra e KeyPair la chiave pubblica, cerca nel Registro di sistema la chiave corretta corrispondente alla chiave pubblica.
Il formato del nome visualizzato di un AssemblyName oggetto è una stringa Unicode delimitata da virgole che inizia con il nome, come indicato di seguito:
Name <,Culture = CultureInfo> <,Version = Major.Minor.Build.Revision> <, StrongName> <,PublicKeyToken> '\0'
Name è il nome testuale dell'assembly.
CultureInfo è la lingua definita dal formato RFC1766.
Major
Build, Minor, e Revision sono la versione principale, la versione secondaria, il numero di build e il numero di revisione dell'assembly.
StrongName è il bit a 64 bit con codifica esadecimale del valore hash della chiave pubblica generata usando l'algoritmo hash SHA-1 e la chiave pubblica specificata da SetPublicKey.
PublicKeyToken è la chiave pubblica con codifica esadecimale specificata da SetPublicKey.
La codifica esadecimale è definita come conversione di ogni byte di un oggetto binario in due caratteri esadecimali, passando da un byte minimo a un byte più significativo. Verranno aggiunti valori di visualizzazione aggiuntivi in base alle esigenze.
Se la chiave pubblica completa è nota, PublicKey può essere sostituita da StrongName.
Si noti anche che, ad eccezione Namedi , che deve venire per primo, l'ordine lessicale dei parametri non è importante. Tuttavia, qualsiasi parametro (Version, CultureStrongName o PublicKey) non impostato in modo specifico viene considerato omesso e viene AssemblyName quindi considerato parziale. Quando si specificano informazioni parziali, i parametri Name devono essere specificati nell'ordine descritto in precedenza.
Quando si specifica un nome visualizzato, la convenzione StrongName =null o PublicKey= null indica che è necessaria l'associazione e la corrispondenza rispetto a un assembly denominato semplice. Inoltre, la convenzione Culture= "" (virgoletta doppia che rappresenta una stringa vuota) indica la corrispondenza con le impostazioni cultura predefinite.
Nell'esempio seguente viene illustrato un oggetto AssemblyName per un assembly denominato con impostazioni cultura predefinite.
ExampleAssembly, Culture=""
Nell'esempio seguente viene illustrato un riferimento completamente specificato per un assembly fortemente nominato con cultura "en".
ExampleAssembly, Version=1.0.0.0, Culture=en, PublicKeyToken=a5d015c7d5a0b012
Costruttori
| Nome | Descrizione |
|---|---|
| AssemblyName() |
Inizializza una nuova istanza della classe AssemblyName. |
| AssemblyName(String) |
Inizializza una nuova istanza della AssemblyName classe con il nome visualizzato specificato. |
Proprietà
| Nome | Descrizione |
|---|---|
| CodeBase |
Obsoleti.
Ottiene o imposta il percorso dell'assembly come URL. |
| ContentType |
Ottiene o imposta un valore che indica il tipo di contenuto che contiene l'assembly. |
| CultureInfo |
Ottiene o imposta le impostazioni cultura supportate dall'assembly. |
| CultureName |
Ottiene o imposta il nome delle impostazioni cultura associate all'assembly. |
| EscapedCodeBase |
Obsoleti.
Ottiene l'URI, inclusi i caratteri di escape, che rappresenta la codebase. |
| Flags |
Ottiene o imposta gli attributi dell'assembly. |
| FullName |
Ottiene il nome completo dell'assembly, noto anche come nome visualizzato. |
| HashAlgorithm |
Obsoleti.
Ottiene o imposta l'algoritmo hash utilizzato dal manifesto dell'assembly. |
| KeyPair |
Obsoleti.
Ottiene o imposta la coppia di chiavi di crittografia pubblica e privata utilizzata per creare una firma con nome sicuro per l'assembly. |
| Name |
Ottiene o imposta il nome semplice dell'assembly. Si tratta in genere, ma non necessariamente, del nome file del file manifesto dell'assembly, meno la relativa estensione. |
| ProcessorArchitecture |
Obsoleti.
Ottiene o imposta un valore che identifica il processore e i bit per parola della piattaforma di destinazione di un eseguibile. |
| Version |
Ottiene o imposta i numeri principali, secondari, di compilazione e revisione dell'assembly. |
| VersionCompatibility |
Obsoleti.
Ottiene o imposta le informazioni correlate alla compatibilità dell'assembly con altri assembly. |
Metodi
| Nome | Descrizione |
|---|---|
| Clone() |
Crea una copia di questo AssemblyName oggetto. |
| Equals(Object) |
Determina se l'oggetto specificato è uguale all'oggetto corrente. (Ereditato da Object) |
| GetAssemblyName(String) |
Ottiene l'oggetto AssemblyName per un determinato file. |
| GetHashCode() |
Funge da funzione hash predefinita. (Ereditato da Object) |
| GetObjectData(SerializationInfo, StreamingContext) |
Obsoleti.
Ottiene le informazioni di serializzazione con tutti i dati necessari per ricreare un'istanza di . |
| GetPublicKey() |
Ottiene la chiave pubblica dell'assembly. |
| GetPublicKeyToken() |
Ottiene il token di chiave pubblica, ovvero gli ultimi 8 byte dell'hash SHA-1 della chiave pubblica in cui è firmata l'applicazione o l'assembly. |
| GetType() |
Ottiene il Type dell'istanza corrente. (Ereditato da Object) |
| MemberwiseClone() |
Crea una copia superficiale del Objectcorrente. (Ereditato da Object) |
| OnDeserialization(Object) |
Implementa l'interfaccia ISerializable e viene richiamata dall'evento di deserializzazione al termine della deserializzazione. |
| ReferenceMatchesDefinition(AssemblyName, AssemblyName) |
Restituisce un valore che indica se due nomi di assembly sono uguali. Il confronto è basato sui nomi di assembly semplici. |
| SetPublicKey(Byte[]) |
Imposta la chiave pubblica che identifica l'assembly. |
| SetPublicKeyToken(Byte[]) |
Imposta il token di chiave pubblica, ovvero gli ultimi 8 byte dell'hash SHA-1 della chiave pubblica in cui l'applicazione o l'assembly è firmato. |
| ToString() |
Restituisce il nome completo dell'assembly, noto anche come nome visualizzato. |
Implementazioni dell'interfaccia esplicita
| Nome | Descrizione |
|---|---|
| _AssemblyName.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Esegue il mapping di un set di nomi a un set corrispondente di identificatori dispatch. |
| _AssemblyName.GetTypeInfo(UInt32, UInt32, IntPtr) |
Recupera le informazioni sul tipo relative a un oggetto che può quindi essere usato per ottenere informazioni sul tipo relative a un'interfaccia. |
| _AssemblyName.GetTypeInfoCount(UInt32) |
Recupera il numero di interfacce di informazioni sul tipo fornite da un oggetto (0 o 1). |
| _AssemblyName.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Fornisce l'accesso alle proprietà e ai metodi esposti da un oggetto . |