Compartilhar via


Activator Classe

Definição

Contém métodos para criar tipos de objetos localmente ou remotamente, ou obter referências a objetos remotos existentes. Essa 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 a seguir mostra como usar a Activator classe para construir dinamicamente objetos em tempo de execução.

using namespace System;
using namespace System::Reflection;
using namespace System::Text;

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

void main()
{
    // Create an instance of the StringBuilder type using 
    // Activator.CreateInstance.
    Object^ o = Activator::CreateInstance(StringBuilder::typeid);

    // 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, 
                                      SomeType::typeid->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
 */
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

Comentários

O CreateInstance método cria uma instância de um tipo definido em um assembly invocando o construtor que melhor corresponde aos argumentos especificados. Se nenhum argumento for especificado, o construtor que não usa parâmetros, ou seja, o construtor sem parâmetros, será invocado.

Você deve ter permissão suficiente para pesquisar e chamar um construtor; caso contrário, uma exceção será gerada. Por padrão, somente construtores públicos são considerados durante a pesquisa por um construtor. Se nenhum construtor ou construtor sem parâmetros puder ser encontrado, uma exceção será gerada.

Um parâmetro binder especifica um objeto que pesquisa um assembly em busca de um construtor adequado. Você pode especificar seu próprio associador e critérios de pesquisa. Se nenhum associador for especificado, um associador padrão será usado. 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 para o construtor. Para obter mais informações, consulte a classe System.Security.Policy.Evidence.

Uma instância de um tipo pode ser criada em um site local ou remoto. Se o tipo for criado remotamente, um parâmetro de atributo de ativação especificará o URI do site remoto. A chamada para criar a instância pode passar por sites intermediários antes de chegar ao site remoto. Outros atributos de ativação podem modificar o ambiente ou o contexto no qual a chamada opera nos sites remotos e intermediários.

Se a instância for criada localmente, uma referência a esse objeto será retornada. Se a instância for criada remotamente, uma referência a um proxy será retornada. O objeto remoto é manipulado por meio do proxy como se fosse um objeto local.

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

Assemblies contêm definições de tipo. O CreateInstance método cria uma instância de um tipo de um assembly em execução no momento. O CreateInstanceFrom método cria uma instância de um arquivo que contém um assembly. O CreateComInstanceFrom método cria uma instância de um objeto COM de um arquivo que contém um assembly.

Métodos

CreateComInstanceFrom(String, String)

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

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

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

CreateInstance(ActivationContext)

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

CreateInstance(ActivationContext, String[])

Cria uma instância do tipo que é designada pelo objeto ActivationContext especificado e ativada com os dados de ativação personalizados 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(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 corresponda melhor aos parâmetros especificados.

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 corresponda melhor aos parâmetros especificados.

CreateInstance(String, String)

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

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

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

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

Cria uma instância do tipo cujo nome é especificado, usando o assembly 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 assembly nomeado e o construtor sem parâmetros.

CreateInstance(Type)

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

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, BindingFlags, Binder, Object[], CultureInfo, Object[])

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 do tipo.

CreateInstance(Type, Object[])

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

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

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

CreateInstance<T>()

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

CreateInstanceFrom(AppDomain, String, String)

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

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 arquivo do assembly nomeado e o construtor que corresponda melhor aos parâmetros especificados.

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 arquivo do assembly nomeado e o construtor que corresponda melhor aos parâmetros especificados.

CreateInstanceFrom(String, String)

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

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

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

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

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

CreateInstanceFrom(String, String, Object[])

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

GetObject(Type, String)

Cria um proxy para o objeto conhecido indicado pelo tipo especificado e pela URL.

GetObject(Type, String, Object)

Cria um proxy para o objeto conhecido indicado pelo tipo especificado, URL e dados de canal.

Implantações explícitas de interface

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

Mapeia um conjunto de nomes para um conjunto correspondente de identificadores de expedição.

_Activator.GetTypeInfo(UInt32, UInt32, IntPtr)

Recupera as informações do tipo de um objeto, que podem ser usadas para obter informações de tipo para uma interface.

_Activator.GetTypeInfoCount(UInt32)

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

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

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

Aplica-se a