Questa documentazione è stata archiviata e non viene gestita.

Classe Activator

Contiene metodi per creare tipi di oggetti, localmente o in remoto, oppure per ottenere riferimenti a oggetti remoti esistenti. Questa classe non può essere ereditata.

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

[ComVisibleAttribute(true)] 
[ClassInterfaceAttribute(ClassInterfaceType.None)] 
public sealed class Activator : _Activator
/** @attribute ComVisibleAttribute(true) */ 
/** @attribute ClassInterfaceAttribute(ClassInterfaceType.None) */ 
public final class Activator implements _Activator
ComVisibleAttribute(true) 
ClassInterfaceAttribute(ClassInterfaceType.None) 
public final class Activator implements _Activator

Il metodo CreateInstance crea un'istanza di un tipo definito in un assembly chiamando il costruttore più adatto agli argomenti specificati. Se nessun argomento viene specificato, viene chiamato il costruttore che non prevede parametri, ovvero il costruttore predefinito.

Per cercare e chiamare un costruttore è necessario disporre dell'autorizzazione necessaria, in caso contrario viene generata un'eccezione. In base all'impostazione predefinita vengono considerati solo i costruttori pubblici durante la ricerca di un costruttore. Se non si riesce a trovare un costruttore o il costruttore predefinito, viene generata un'eccezione.

Il parametro del gestore di associazione specifica un oggetto con il quale ricercare un costruttore adatto in un assembly. È possibile specificare il gestore di associazione e i criteri di ricerca ma se non viene specificato un gestore di associazione viene utilizzato quello predefinito. Per ulteriori informazioni, vedere le classi System.Reflection.Binder e System.Reflection.BindingFlags.

Un parametro di prova ha effetto sui criteri e sulle autorizzazioni di protezione del costruttore. Per ulteriori informazioni, vedere la classe System.Security.Policy.Evidence.

Un'istanza di un tipo può essere creata in un sito locale o remoto. Se il tipo viene creato in remoto, un parametro dell'attributo di attivazione specifica l'URI del sito remoto. La chiamata per creare l'istanza può passare tramite siti intermedi prima di raggiungere il sito remoto. Altri attributi di attivazione possono modificare l'ambiente, o contesto, nel quale la chiamata opera nei siti intermedi e nel sito remoto.

Se l'istanza viene creata localmente, viene restituito un riferimento all'oggetto. Se l'istanza viene creata in remoto, viene restituito un riferimento a un proxy. L'oggetto remoto viene modificato tramite il proxy, come se si trattasse di un oggetto locale.

Il metodo GetObject crea un proxy per un oggetto remoto attualmente in esecuzione, un oggetto noto attivato dal server o un servizio Web XML. È possibile specificare il mezzo di connessione, ovvero il canale. Per ulteriori informazioni, vedere la classe System.Runtime.Remoting.Channels.ChannelServices.

Gli assembly contengono definizioni di tipi. Il metodo CreateInstance crea un'istanza di un tipo da un assembly attualmente in esecuzione. Il metodo CreateInstanceFrom crea un'istanza da un file che contiene un assembly. Il metodo CreateComInstanceFrom crea un'istanza di un oggetto COM da un file che contiene un assembly.

Per ulteriori informazioni sugli oggetti attivati da client e da server, vedere l'argomento Attivazione da server.

Nell'esempio riportato di seguito viene illustrato come utilizzare la classe Activator per costruire in modo dinamico oggetti in fase di esecuzione.

Imports System.Reflection
Imports System.Text

Module Module1
    Sub Main()
        ' Create an instance of the StringBuilder type using Activator.CreateInstance.
        Dim o As Object = Activator.CreateInstance(GetType(StringBuilder))

        ' Append a string into the StringBuilder object and display the StringBuilder.
        Dim sb As StringBuilder = CType(o, StringBuilder)
        sb.Append("Hello, there.")
        Console.WriteLine(sb)

        ' Create an instance of the SomeType class that is defined in this assembly.
        Dim oh As Runtime.Remoting.ObjectHandle = _
            Activator.CreateInstanceFrom(Assembly.GetEntryAssembly().CodeBase, GetType(SomeType).FullName)

        ' Call an instance method defined by the SomeType type using this object.
        Dim st As SomeType = CType(oh.Unwrap, SomeType)
        st.DoSomething(5)
    End Sub

    Class SomeType
        Public Sub DoSomething(ByVal x As Int32)
            Console.WriteLine("100 / {0} = {1}", x, 100 \ x)
        End Sub
    End Class
End Module

' This code produces the following output.
' 
' Hello, there.
' 100 / 5 = 20

I membri statici pubblici (Shared in Visual Basic) di questo tipo sono validi per le operazioni multithreading. I membri di istanza non sono garantiti come thread safe.

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile per Pocket PC, Windows Mobile per Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

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

.NET Framework

Supportato in: 2.0 1.1 1.0

.NET Compact Framework

Supportato in: 2.0 1.0
Mostra: