Ler en inglés

Compartir por


Activator Clase

Definición

Contiene métodos para crear tipos de objetos de forma local o remota, o para obtener referencias a objetos remotos existentes. Esta clase no puede heredarse.

C#
public static class Activator
C#
[System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)]
public sealed class Activator : System.Runtime.InteropServices._Activator
C#
[System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class Activator : System.Runtime.InteropServices._Activator
Herencia
Activator
Atributos
Implementaciones

Ejemplos

En el ejemplo siguiente se muestra cómo usar la Activator clase para construir objetos dinámicamente en tiempo de ejecución.

C#
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
 */

Comentarios

El CreateInstance método crea una instancia de un tipo definido en un ensamblado invocando el constructor que mejor coincide con los argumentos especificados. Si no se especifica ningún argumento, se invoca el constructor que no toma ningún parámetro, es decir, el constructor sin parámetros.

Debe tener permiso suficiente para buscar y llamar a un constructor; de lo contrario, se produce una excepción. De forma predeterminada, solo se tienen en cuenta los constructores públicos durante la búsqueda de un constructor. Si no se encuentra ningún constructor o constructor sin parámetros, se produce una excepción.

Un parámetro de enlazador especifica un objeto que busca un ensamblado para un constructor adecuado. Puede especificar su propio enlazador y criterios de búsqueda. Si no se especifica ningún enlazador, se usa un enlazador predeterminado. Para obtener más información, vea las clases System.Reflection.Binder y System.Reflection.BindingFlags.

Un parámetro de evidencia afecta a la directiva de seguridad y los permisos para el constructor. Para obtener más información, vea la clase System.Security.Policy.Evidence.

Se puede crear una instancia de un tipo en un sitio local o remoto. Si el tipo se crea de forma remota, un parámetro de atributo de activación especifica el URI del sitio remoto. La llamada para crear la instancia podría pasar por sitios intermedios antes de llegar al sitio remoto. Otros atributos de activación pueden modificar el entorno, o contexto, en el que la llamada funciona en los sitios remotos e intermedios.

Si la instancia se crea localmente, se devuelve una referencia a ese objeto. Si la instancia se crea de forma remota, se devuelve una referencia a un proxy. El objeto remoto se manipula a través del proxy como si fuera un objeto local.

El GetObject método crea un proxy en un objeto remoto actualmente en ejecución, un objeto conocido activado por el servidor o un servicio web XML. Puede especificar el medio de conexión, es decir, el canal. Para obtener más información, vea la clase System.Runtime.Remoting.Channels.ChannelServices.

Los ensamblados contienen definiciones de tipo. El CreateInstance método crea una instancia de un tipo a partir de un ensamblado que se está ejecutando actualmente. El CreateInstanceFrom método crea una instancia a partir de un archivo que contiene un ensamblado. El CreateComInstanceFrom método crea una instancia de un objeto COM a partir de un archivo que contiene un ensamblado.

Métodos

CreateComInstanceFrom(String, String)

Crea una instancia del objeto COM cuyo nombre se especifica, usando el archivo de ensamblado con nombre y el constructor sin parámetros.

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

Crea una instancia del objeto COM cuyo nombre se especifica, usando el archivo de ensamblado con nombre y el constructor sin parámetros.

CreateInstance(ActivationContext)

Crea una instancia del tipo designado por el objeto ActivationContext especificado.

CreateInstance(ActivationContext, String[])

Crea una instancia del tipo designado por el objeto ActivationContext especificado y activada con los datos de activación personalizados especificados.

CreateInstance(AppDomain, String, String)

Crea una instancia del tipo cuyo nombre se especifica en el dominio remoto indicado, usando el ensamblado con nombre y el constructor sin parámetros.

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

Crea una instancia del tipo cuyo nombre se especifica en el dominio remoto indicado, usando el ensamblado con nombre y el constructor que se adapta mejor a los parámetros especificados.

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

Crea una instancia del tipo cuyo nombre se especifica en el dominio remoto indicado, usando el ensamblado con nombre y el constructor que se adapta mejor a los parámetros especificados.

CreateInstance(String, String)

Crea una instancia del tipo cuyo nombre se especifica, usando el ensamblado con nombre y el constructor sin parámetros.

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

Crea una instancia del tipo cuyo nombre se especifica, usando el ensamblado con nombre y el constructor que mejor coincida con los parámetros especificados.

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

Crea una instancia del tipo cuyo nombre se especifica, usando el ensamblado con nombre y el constructor que mejor coincida con los parámetros especificados.

CreateInstance(String, String, Object[])

Crea una instancia del tipo cuyo nombre se especifica, usando el ensamblado con nombre y el constructor sin parámetros.

CreateInstance(Type)

Crea una instancia del tipo especificado usando el constructor sin parámetros de ese tipo.

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

Crea una instancia del tipo especificado utilizando el constructor que mejor coincida con los parámetros especificados.

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

Crea una instancia del tipo especificado utilizando el constructor que mejor coincida con los parámetros especificados.

CreateInstance(Type, Boolean)

Crea una instancia del tipo especificado usando el constructor sin parámetros de ese tipo.

CreateInstance(Type, Object[])

Crea una instancia del tipo especificado utilizando el constructor que mejor coincida con los parámetros especificados.

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

Crea una instancia del tipo especificado utilizando el constructor que mejor coincida con los parámetros especificados.

CreateInstance<T>()

Crea una instancia del tipo designado por el parámetro de tipo genérico especificado, usando el constructor sin parámetros.

CreateInstanceFrom(AppDomain, String, String)

Crea una instancia del tipo cuyo nombre se especifica en el dominio remoto indicado, usando el archivo de ensamblado con nombre y el constructor sin parámetros.

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

Crea una instancia del tipo cuyo nombre se especifica en el dominio remoto indicado, usando el archivo del ensamblado con nombre y el constructor que se adapta mejor a los parámetros especificados.

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

Crea una instancia del tipo cuyo nombre se especifica en el dominio remoto indicado, usando el archivo del ensamblado con nombre y el constructor que se adapta mejor a los parámetros especificados.

CreateInstanceFrom(String, String)

Crea una instancia del tipo cuyo nombre se especifica, usando el archivo de ensamblado con nombre y el constructor sin parámetros.

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

Crea una instancia del tipo cuyo nombre se especifica, usando el archivo de ensamblado con nombre y el constructor que mejor coincida con los parámetros especificados.

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

Crea una instancia del tipo cuyo nombre se especifica, usando el archivo de ensamblado con nombre y el constructor que mejor coincida con los parámetros especificados.

CreateInstanceFrom(String, String, Object[])

Crea una instancia del tipo cuyo nombre se especifica, usando el archivo de ensamblado con nombre y el constructor sin parámetros.

GetObject(Type, String)

Crea un proxy para el objeto conocido indicado por el tipo y dirección URL especificados.

GetObject(Type, String, Object)

Crea un proxy para el objeto conocido indicado por el tipo, dirección URL y datos de canal especificados.

Implementaciones de interfaz explícitas

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

Asigna un conjunto de nombres a un conjunto correspondiente de identificadores de envío.

_Activator.GetTypeInfo(UInt32, UInt32, IntPtr)

Recupera la información de tipo de un objeto, que se puede usar después para obtener la información de tipo de una interfaz.

_Activator.GetTypeInfoCount(UInt32)

Recupera el número de interfaces de información de tipo que proporciona un objeto (0 ó 1).

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

Proporciona acceso a las propiedades y los métodos expuestos por un objeto.

Se aplica a

Produto Versións
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0