Activator Classe
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
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. |