Activator Classe

Definição

Contém métodos para criar tipos de objetos local ou remotamente, ou para obter referências a objetos remotos existentes. Esta classe não pode ser herdada.

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
Herança
Activator
Atributos
Implementações

Exemplos

O exemplo seguinte mostra como usar a Activator classe para construir objetos dinamicamente em tempo de execução.

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

Observações

O CreateInstance método cria uma instância de um tipo definido numa montagem ao invocar o construtor que melhor corresponde aos argumentos especificados. Se não forem especificados argumentos, é invocado o construtor que não toma parâmetros, ou seja, o construtor sem parâmetros.

Deve ter permissão suficiente para procurar e chamar um construtor; caso contrário, é lançada uma exceção. Por defeito, apenas construtores públicos são considerados durante a pesquisa por um construtor. Se não for encontrado construtor ou construtor sem parâmetros, é lançada uma exceção.

Um parâmetro binder especifica um objeto que pesquisa um construtor adequado numa assembleia. Pode especificar o seu próprio dossier e critérios de pesquisa. Se não for especificado um binder, é usado um binder padrão. Para obter mais informações, consulte as classes System.Reflection.Binder e System.Reflection.BindingFlags.

Um parâmetro de evidência afeta a política de segurança e as permissões do construtor. Para obter mais informações, consulte a classe System.Security.Policy.Evidence.

Uma instância de um tipo pode ser criada num local local ou remoto. Se o tipo for criado remotamente, um parâmetro de atributo de ativação especifica o URI do local remoto. A chamada para criar a instância pode passar por sites intermédios antes de chegar ao local remoto. Outros atributos de ativação podem modificar o ambiente, ou contexto, em que a chamada opera nos locais remotos e intermédios.

Se a instância for criada localmente, é devolvida uma referência a esse objeto. Se a instância for criada remotamente, é devolvida uma referência a um proxy. O objeto remoto é manipulado através do proxy como se fosse um objeto local.

O GetObject método cria um proxy para um objeto remoto atualmente em execução, um objeto conhecido ativado pelo servidor ou um serviço Web XML. Pode especificar o meio de ligação, ou seja, o canal. Para obter mais informações, consulte a classe System.Runtime.Remoting.Channels.ChannelServices.

Os assemblies contêm definições de tipos. O CreateInstance método cria uma instância de um tipo a partir de um conjunto em execução. O CreateInstanceFrom método cria uma instância a partir de um ficheiro que contém um assembly. O CreateComInstanceFrom método cria uma instância de um objeto COM a partir de um ficheiro que contém um assembly.

Métodos

Name Description
CreateComInstanceFrom(String, String, Byte[], AssemblyHashAlgorithm)

Cria uma instância do objeto COM cujo nome é especificado, usando o ficheiro assembly nomeado e o construtor sem parâmetros.

CreateComInstanceFrom(String, String)

Cria uma instância do objeto COM cujo nome é especificado, usando o ficheiro assembly nomeado e o construtor sem parâmetros.

CreateInstance(ActivationContext, String[])

Cria uma instância do tipo designado pelo objeto especificado ActivationContext e ativada com os dados personalizados de ativação especificados.

CreateInstance(ActivationContext)

Cria uma instância do tipo designado pelo objeto especificado ActivationContext .

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

Cria uma instância do tipo cujo nome é especificado no domínio remoto especificado, usando o assembly nomeado e o construtor que melhor corresponde aos parâmetros especificados.

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

Cria uma instância do tipo cujo nome é especificado no domínio remoto especificado, usando o assembly nomeado e o construtor que melhor corresponde aos parâmetros especificados.

CreateInstance(AppDomain, String, String)

Cria uma instância do tipo cujo nome é especificado no domínio remoto especificado, usando o assembly nomeado e o construtor sem parâmetros.

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

Cria uma instância do tipo cujo nome é especificado, usando o conjunto nomeado e o construtor que melhor corresponde aos parâmetros especificados.

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

Cria uma instância do tipo cujo nome é especificado, usando o conjunto nomeado e o construtor que melhor corresponde aos parâmetros especificados.

CreateInstance(String, String, Object[])

Cria uma instância do tipo cujo nome é especificado, usando o conjunto nomeado e o construtor sem parâmetros.

CreateInstance(String, String)

Cria uma instância do tipo cujo nome é especificado, usando o conjunto nomeado e o construtor sem parâmetros.

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

Cria uma instância do tipo especificado usando o construtor que melhor corresponde aos parâmetros especificados.

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

Cria uma instância do tipo especificado usando o construtor que melhor corresponde aos parâmetros especificados.

CreateInstance(Type, Boolean)

Cria uma instância do tipo especificado usando o construtor sem parâmetros desse tipo.

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

Cria uma instância do tipo especificado usando o construtor que melhor corresponde aos parâmetros especificados.

CreateInstance(Type, Object[])

Cria uma instância do tipo especificado usando o construtor que melhor corresponde aos parâmetros especificados.

CreateInstance(Type)

Cria uma instância do tipo especificado usando o construtor sem parâmetros desse tipo.

CreateInstance<T>()

Cria uma instância do tipo designado pelo parâmetro genérico especificado, usando o construtor sem parâmetros.

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

Cria uma instância do tipo cujo nome é especificado no domínio remoto especificado, usando o ficheiro assembly nomeado e o construtor que melhor corresponde aos parâmetros especificados.

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

Cria uma instância do tipo cujo nome é especificado no domínio remoto especificado, usando o ficheiro assembly nomeado e o construtor que melhor corresponde aos parâmetros especificados.

CreateInstanceFrom(AppDomain, String, String)

Cria uma instância do tipo cujo nome é especificado no domínio remoto especificado, usando o ficheiro assembly nomeado e o construtor sem parâmetros.

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

Cria uma instância do tipo cujo nome é especificado, usando o ficheiro assembly nomeado e o construtor que melhor corresponde aos parâmetros especificados.

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

Cria uma instância do tipo cujo nome é especificado, usando o ficheiro assembly nomeado e o construtor que melhor corresponde aos parâmetros especificados.

CreateInstanceFrom(String, String, Object[])

Cria uma instância do tipo cujo nome é especificado, usando o ficheiro assembly nomeado e o construtor sem parâmetros.

CreateInstanceFrom(String, String)

Cria uma instância do tipo cujo nome é especificado, usando o ficheiro assembly nomeado e o construtor sem parâmetros.

GetObject(Type, String, Object)

Cria um proxy para o objeto bem conhecido indicado pelo tipo, URL e dados do canal especificados.

GetObject(Type, String)

Cria um proxy para o objeto bem conhecido indicado pelo tipo e URL especificados.

Implementações de Interface Explícita

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

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

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

_Activator.GetTypeInfoCount(UInt32)

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

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

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

Aplica-se a