Exportar (0) Imprimir
Expandir todo
Este artículo proviene de un motor de traducción automática. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

AppDomain.CreateInstanceAndUnwrap (Método) (String, String)

Crea una nueva instancia del tipo especificado. Los parámetros especifican el ensamblado en el que se definen el tipo y el nombre del tipo.

Espacio de nombres:  System
Ensamblado:  mscorlib (en mscorlib.dll)

public Object CreateInstanceAndUnwrap(
	string assemblyName,
	string typeName
)

Parámetros

assemblyName
Tipo: System.String
Nombre para mostrar del ensamblado. Vea Assembly.FullName.
typeName
Tipo: System.String
Nombre completo del tipo solicitado, incluido el espacio de nombres pero no el ensamblado, tal como lo devuelve la propiedad Type.FullName.

Valor devuelto

Tipo: System.Object
Instancia del objeto especificado por typeName.

ExcepciónCondición
ArgumentNullException

assemblyName o typeName es null.

MissingMethodException

No se encontró ningún constructor público coincidente.

TypeLoadException

No se encontró typename en assemblyName.

FileNotFoundException

assemblyName.

MethodAccessException

El llamador no tiene permiso para llamar a este constructor.

AppDomainUnloadedException

Se ha intentado realizar la operación en un dominio de aplicación descargado.

BadImageFormatException

assemblyName no es un ensamblado válido.

O bien

Actualmente está cargada la versión 2.0 o posterior de Common Language Runtime y assemblyName se ha compilado con una versión posterior.

FileLoadException

Se ha cargado un ensamblado o módulo dos veces con dos evidencias diferentes.

Se trata de un método útil que combina CreateInstance y ObjectHandle.Unwrap. Este método llama al constructor predeterminado de typeName.

Para obtener el formato de assemblyName, vea AssemblyName. Vea la propiedad Type.FullName para obtener el formato de typeName.

NotaNota

Si realiza una llamada enlazada en tiempo de compilación a un método M de un objeto de tipo T1 que haya devuelto CreateInstanceAndUnwrap, y dicho método realiza una llamada enlazada en tiempo de compilación a un método de un objeto de tipo T2 en un ensamblado C que no sea el ensamblado actual ni el ensamblado que contiene T1, el ensamblado C se cargará en el dominio de aplicación actual. Esta carga se produce incluso cuando la llamada enlazada en tiempo de compilación a T1.M() se realiza en el cuerpo de un objeto DynamicMethod o en otro código generado dinámicamente. Si el dominio actual es el dominio predeterminado, el ensamblado C no se puede descargar hasta que finaliza el proceso. Si el dominio actual intenta cargar más tarde el ensamblado C, se podría producir un error en la carga.

En el ejemplo de código siguiente se muestra la forma más sencilla de ejecutar código en otro dominio de aplicación. El ejemplo define una clase denominada Worker que hereda de MarshalByRefObject. La clase Worker define un método que muestra el nombre del dominio de aplicación en el que se está ejecutando. En el ejemplo se crean instancias de Worker en el dominio de aplicación predeterminado y en un nuevo dominio de aplicación.

NotaNota

El ensamblado que contiene Worker se debe cargar en ambos dominios de aplicación, pero se pueden cargar otros ensamblados que sólo existan en el nuevo dominio de aplicación.


using System;
using System.Reflection;

public class Worker : MarshalByRefObject
{
    public void PrintDomain() 
    { 
        Console.WriteLine("Object is executing in AppDomain \"{0}\"",
            AppDomain.CurrentDomain.FriendlyName); 
    }
}

class Example
{
    public static void Main()
    {
        // Create an ordinary instance in the current AppDomain
        Worker localWorker = new Worker();
        localWorker.PrintDomain();

        // Create a new application domain, create an instance
        // of Worker in the application domain, and execute code
        // there.
        AppDomain ad = AppDomain.CreateDomain("New domain");
        Worker remoteWorker = (Worker) ad.CreateInstanceAndUnwrap(
            Assembly.GetExecutingAssembly().FullName,
            "Worker");
        remoteWorker.PrintDomain();
    }
}

/* This code produces output similar to the following:

Object is executing in AppDomain "source.exe"
Object is executing in AppDomain "New domain"
 */


.NET Framework

Compatible con: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Compatible con: 4, 3.5 SP1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (no se admite el rol Server Core), Windows Server 2008 R2 (se admite el rol Server Core con SP1 o versiones posteriores; no se admite Itanium)

.NET Framework no admite todas las versiones de todas las plataformas. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

Adiciones de comunidad

AGREGAR
Mostrar:
© 2015 Microsoft