Activator Classe

Definizione

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

public ref class Activator abstract sealed
public ref class Activator sealed : System::Runtime::InteropServices::_Activator
public static class Activator
[System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)]
public sealed class Activator : System.Runtime.InteropServices._Activator
[System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class Activator : System.Runtime.InteropServices._Activator
type Activator = class
[<System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)>]
type Activator = class
    interface _Activator
[<System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type Activator = class
    interface _Activator
Public Class Activator
Public NotInheritable Class Activator
Implements _Activator
Ereditarietà
Activator
Attributi
Implementazioni

Esempio

Nell'esempio seguente viene illustrato come usare la Activator classe per costruire in modo dinamico oggetti in fase di esecuzione.

using System;
using System.Reflection;
using System.Text;

public class SomeType
{
    public void DoSomething(int x)
    {
        Console.WriteLine("100 / {0} = {1}", x, 100 / x);
    }
}

public class Example
{
    static void Main()
    {
        // Create an instance of the StringBuilder type using
        // Activator.CreateInstance.
        Object o = Activator.CreateInstance(typeof(StringBuilder));

        // Append a string into the StringBuilder object and display the
        // StringBuilder.
        StringBuilder sb = (StringBuilder) o;
        sb.Append("Hello, there.");
        Console.WriteLine(sb);

        // Create an instance of the SomeType class that is defined in this
        // assembly.
        System.Runtime.Remoting.ObjectHandle oh =
            Activator.CreateInstanceFrom(Assembly.GetEntryAssembly().CodeBase,
                                         typeof(SomeType).FullName);

        // Call an instance method defined by the SomeType type using this object.
        SomeType st = (SomeType) oh.Unwrap();

        st.DoSomething(5);
    }
}

/* This code produces the following output:

Hello, there.
100 / 5 = 20
 */
open System
open System.Reflection
open System.Text

type SomeType() =
    member _.DoSomething(x) = printfn $"100 / {x} = {100 / x}"

// Create an instance of the StringBuilder type using Activator.CreateInstance.
let o = Activator.CreateInstance typeof<StringBuilder>

// Append a string into the StringBuilder object and display the StringBuilder.
let sb = o :?> StringBuilder
sb.Append "Hello, there." |> ignore
printfn $"{sb}"

// Create an instance of the SomeType class that is defined in this assembly.
let oh = 
    Activator.CreateInstanceFrom(Assembly.GetEntryAssembly().Location, typeof<SomeType>.FullName)

// Call an instance method defined by the SomeType type using this object.
let st = oh.Unwrap() :?> SomeType

st.DoSomething 5

(* This code produces the following output:

Hello, there.
100 / 5 = 20
 *)
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 System.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

Commenti

Il CreateInstance metodo crea un'istanza di un tipo definito in un assembly richiamando il costruttore che meglio corrisponde agli argomenti specificati. Se non vengono specificati argomenti, viene richiamato il costruttore che non accetta parametri, ovvero il costruttore senza parametri.

È necessario disporre di autorizzazioni sufficienti per cercare e chiamare un costruttore; in caso contrario, viene generata un'eccezione. Per impostazione predefinita, solo i costruttori pubblici vengono considerati durante la ricerca di un costruttore. Se non è possibile trovare alcun costruttore o costruttore senza parametri, viene generata un'eccezione.

Un parametro binder specifica un oggetto che cerca in un assembly un costruttore appropriato. È possibile specificare il proprio binder e i criteri di ricerca. Se non viene specificato alcun binder, viene usato un gestore di associazione predefinito. Per altre informazioni, vedere le System.Reflection.Binder classi e System.Reflection.BindingFlags .

Un parametro di evidenza influisce sui criteri di sicurezza e sulle autorizzazioni per il costruttore. Per altre informazioni, vedere la classe System.Security.Policy.Evidence.

È possibile creare un'istanza di un tipo 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 potrebbe passare attraverso siti intermedi prima di raggiungere il sito remoto. Altri attributi di attivazione possono modificare l'ambiente o il contesto in cui la chiamata opera nei siti remoti e intermedi.

Se l'istanza viene creata localmente, viene restituito un riferimento a tale oggetto. Se l'istanza viene creata in modalità remota, viene restituito un riferimento a un proxy. L'oggetto remoto viene modificato tramite il proxy come se fosse un oggetto locale.

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

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

Metodi

Nome Descrizione
CreateComInstanceFrom(String, String, Byte[], AssemblyHashAlgorithm)

Crea un'istanza dell'oggetto COM il cui nome è specificato, utilizzando il file assembly denominato e il costruttore senza parametri.

CreateComInstanceFrom(String, String)

Crea un'istanza dell'oggetto COM il cui nome è specificato, utilizzando il file assembly denominato e il costruttore senza parametri.

CreateInstance(ActivationContext, String[])

Crea un'istanza del tipo designato dall'oggetto specificato ActivationContext e attivato con i dati di attivazione personalizzati specificati.

CreateInstance(ActivationContext)

Crea un'istanza del tipo designato dall'oggetto specificato ActivationContext .

CreateInstance(AppDomain, String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[], Evidence)
Obsoleti.

Crea un'istanza del tipo il cui nome viene specificato nel dominio remoto specificato, utilizzando l'assembly denominato e il costruttore che meglio corrisponde ai parametri specificati.

CreateInstance(AppDomain, String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[])

Crea un'istanza del tipo il cui nome viene specificato nel dominio remoto specificato, utilizzando l'assembly denominato e il costruttore che meglio corrisponde ai parametri specificati.

CreateInstance(AppDomain, String, String)

Crea un'istanza del tipo il cui nome viene specificato nel dominio remoto specificato, utilizzando l'assembly denominato e il costruttore senza parametri.

CreateInstance(String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[], Evidence)
Obsoleti.

Crea un'istanza del tipo il cui nome è specificato, utilizzando l'assembly denominato e il costruttore che meglio corrisponde ai parametri specificati.

CreateInstance(String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[])

Crea un'istanza del tipo il cui nome è specificato, utilizzando l'assembly denominato e il costruttore che meglio corrisponde ai parametri specificati.

CreateInstance(String, String, Object[])

Crea un'istanza del tipo il cui nome è specificato, utilizzando l'assembly denominato e il costruttore senza parametri.

CreateInstance(String, String)

Crea un'istanza del tipo il cui nome è specificato, utilizzando l'assembly denominato e il costruttore senza parametri.

CreateInstance(Type, BindingFlags, Binder, Object[], CultureInfo, Object[])

Crea un'istanza del tipo specificato usando il costruttore che meglio corrisponde ai parametri specificati.

CreateInstance(Type, BindingFlags, Binder, Object[], CultureInfo)

Crea un'istanza del tipo specificato usando il costruttore che meglio corrisponde ai parametri specificati.

CreateInstance(Type, Boolean)

Crea un'istanza del tipo specificato utilizzando il costruttore senza parametri del tipo.

CreateInstance(Type, Object[], Object[])

Crea un'istanza del tipo specificato usando il costruttore che meglio corrisponde ai parametri specificati.

CreateInstance(Type, Object[])

Crea un'istanza del tipo specificato usando il costruttore che meglio corrisponde ai parametri specificati.

CreateInstance(Type)

Crea un'istanza del tipo specificato utilizzando il costruttore senza parametri del tipo.

CreateInstance<T>()

Crea un'istanza del tipo designato dal parametro di tipo generico specificato, usando il costruttore senza parametri.

CreateInstanceFrom(AppDomain, String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[], Evidence)
Obsoleti.

Crea un'istanza del tipo il cui nome viene specificato nel dominio remoto specificato, utilizzando il file assembly denominato e il costruttore che meglio corrisponde ai parametri specificati.

CreateInstanceFrom(AppDomain, String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[])

Crea un'istanza del tipo il cui nome viene specificato nel dominio remoto specificato, utilizzando il file assembly denominato e il costruttore che meglio corrisponde ai parametri specificati.

CreateInstanceFrom(AppDomain, String, String)

Crea un'istanza del tipo il cui nome viene specificato nel dominio remoto specificato, utilizzando il file assembly denominato e il costruttore senza parametri.

CreateInstanceFrom(String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[], Evidence)
Obsoleti.

Crea un'istanza del tipo il cui nome è specificato, utilizzando il file assembly denominato e il costruttore che meglio corrisponde ai parametri specificati.

CreateInstanceFrom(String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[])

Crea un'istanza del tipo il cui nome è specificato, utilizzando il file assembly denominato e il costruttore che meglio corrisponde ai parametri specificati.

CreateInstanceFrom(String, String, Object[])

Crea un'istanza del tipo il cui nome è specificato, utilizzando il file assembly denominato e il costruttore senza parametri.

CreateInstanceFrom(String, String)

Crea un'istanza del tipo il cui nome è specificato, utilizzando il file assembly denominato e il costruttore senza parametri.

GetObject(Type, String, Object)

Crea un proxy per l'oggetto noto indicato dal tipo, dall'URL e dai dati del canale specificati.

GetObject(Type, String)

Crea un proxy per l'oggetto noto indicato dal tipo e dall'URL specificati.

Implementazioni dell'interfaccia esplicita

Nome Descrizione
_Activator.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Esegue il mapping di un set di nomi a un set corrispondente di identificatori dispatch.

_Activator.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.

_Activator.GetTypeInfoCount(UInt32)

Recupera il numero di interfacce di informazioni sul tipo fornite da un oggetto (0 o 1).

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

Fornisce l'accesso alle proprietà e ai metodi esposti da un oggetto .

Si applica a