AppDomain.CreateComInstanceFrom Método

Definição

Cria uma nova instância de um tipo COM especificado.Creates a new instance of a specified COM type.

Sobrecargas

CreateComInstanceFrom(String, String)

Cria uma nova instância de um tipo COM especificado.Creates a new instance of a specified COM type. Parâmetros especificam o nome de um arquivo que contém um assembly com o tipo e o nome do tipo.Parameters specify the name of a file that contains an assembly containing the type and the name of the type.

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

Cria uma nova instância de um tipo COM especificado.Creates a new instance of a specified COM type. Parâmetros especificam o nome de um arquivo que contém um assembly com o tipo e o nome do tipo.Parameters specify the name of a file that contains an assembly containing the type and the name of the type.

CreateComInstanceFrom(String, String)

Cria uma nova instância de um tipo COM especificado.Creates a new instance of a specified COM type. Parâmetros especificam o nome de um arquivo que contém um assembly com o tipo e o nome do tipo.Parameters specify the name of a file that contains an assembly containing the type and the name of the type.

public:
 System::Runtime::Remoting::ObjectHandle ^ CreateComInstanceFrom(System::String ^ assemblyName, System::String ^ typeName);
public System.Runtime.Remoting.ObjectHandle CreateComInstanceFrom (string assemblyName, string typeName);
member this.CreateComInstanceFrom : string * string -> System.Runtime.Remoting.ObjectHandle
Public Function CreateComInstanceFrom (assemblyName As String, typeName As String) As ObjectHandle

Parâmetros

assemblyName
String

O nome de um arquivo que contém um assembly que define o tipo solicitado.The name of a file containing an assembly that defines the requested type.

typeName
String

O nome do módulo solicitado.The name of the requested type.

Retornos

Um objeto que é um wrapper para a nova instância especificada por typeName.An object that is a wrapper for the new instance specified by typeName. O valor de retorno precisa ser desencapsulado para acessar o objeto real.The return value needs to be unwrapped to access the real object.

Exceções

assemblyName ou typeName é null.assemblyName or typeName is null.

O tipo não pode ser carregado.The type cannot be loaded.

A operação é tentada em um domínio de aplicativo descarregado.The operation is attempted on an unloaded application domain.

Nenhum construtor público sem parâmetros foi encontrado.No public parameterless constructor was found.

assemblyName não foi encontrado.assemblyName is not found.

typeName é uma classe abstrata.typeName is an abstract class.

- ou --or- Este membro foi invocado com um mecanismo de associação tardia.This member was invoked with a late-binding mechanism.

O chamador não pode fornecer atributos de ativação para um objeto que não seja herdado de MarshalByRefObject.The caller cannot provide activation attributes for an object that does not inherit from MarshalByRefObject.

assemblyName é uma cadeia de caracteres vazia ("").assemblyName is an empty string ("").

assemblyName não é um assembly válido.assemblyName is not a valid assembly.

Um assembly ou módulo foi carregado duas vezes em com duas evidências diferentes.An assembly or module was loaded twice with two different evidences.

O objeto COM que está sendo referenciado é null.The COM object that is being referred to is null.

Exemplos

O exemplo a seguir demonstraThe following sample demonstrates

using namespace System;
using namespace System::Reflection;
using namespace System::Runtime::InteropServices;

[ComVisible(true)]
public ref class MyComVisibleType
{
public:
   MyComVisibleType()
   {
      Console::WriteLine( "MyComVisibleType instantiated!" );
   }

};


[ComVisible(false)]
public ref class MyComNonVisibleType
{
public:
   MyComNonVisibleType()
   {
      Console::WriteLine( "MyComNonVisibleType instantiated!" );
   }

};

void CreateComInstance( String^ typeName )
{
   try
   {
      AppDomain^ currentDomain = AppDomain::CurrentDomain;
      String^ assemblyName = currentDomain->FriendlyName;
      currentDomain->CreateComInstanceFrom( assemblyName, typeName );
   }
   catch ( Exception^ e ) 
   {
      Console::WriteLine( e->Message );
   }

}

int main()
{
   CreateComInstance( "MyComNonVisibleType" ); // Fail!
   CreateComInstance( "MyComVisibleType" ); // OK!
}

using System;
using System.Reflection;
using System.Runtime.InteropServices;

[ComVisible(true)]
class MyComVisibleType {
   public MyComVisibleType() {
      Console.WriteLine("MyComVisibleType instantiated!");
   }
}

[ComVisible(false)]
class MyComNonVisibleType {
   public MyComNonVisibleType() {
      Console.WriteLine("MyComNonVisibleType instantiated!");
   }
}

class Test {
   public static void Main() {
      CreateComInstance("MyComNonVisibleType");   // Fail!
      CreateComInstance("MyComVisibleType");      // OK!
   }
   
   static void CreateComInstance(string typeName) {
      try {
         AppDomain currentDomain = AppDomain.CurrentDomain;
         string assemblyName = currentDomain.FriendlyName;
         currentDomain.CreateComInstanceFrom(assemblyName, typeName);
      } catch (Exception e) {
         Console.WriteLine(e.Message);
      }
   }
}
Imports System.Reflection
Imports System.Runtime.InteropServices

<ComVisible(True)> _
Class MyComVisibleType

   Public Sub New()
      Console.WriteLine("MyComVisibleType instantiated!")
   End Sub

End Class

<ComVisible(False)> _
Class MyComNonVisibleType

   Public Sub New()
      Console.WriteLine("MyComNonVisibleType instantiated!")
   End Sub

End Class

Module Test

   Sub Main()
      CreateComInstance("MyComNonVisibleType")   ' Fail!
      CreateComInstance("MyComVisibleType")      ' OK!
   End Sub

   Sub CreateComInstance(typeName As String)
      Try
         Dim currentDomain As AppDomain = AppDomain.CurrentDomain
         Dim assemblyName As String = currentDomain.FriendlyName
         currentDomain.CreateComInstanceFrom(assemblyName, typeName)
      Catch e As Exception
         Console.WriteLine(e.Message)
      End Try
   End Sub

End Module 'Test

Comentários

Use este método para criar objetos remotamente sem precisar carregar o tipo localmente.Use this method to create objects remotely without having to load the type locally.

O valor de retorno deve ser desempacotado para acessar o objeto real.The return value must to be unwrapped to access the real object.

Um atributo System.Runtime.InteropServices.ComVisibleAttribute com um valor de true deve ser aplicado explicitamente ou por padrão ao tipo COM para esse método para criar uma instância desse tipo; caso contrário, TypeLoadException será lançada.A System.Runtime.InteropServices.ComVisibleAttribute attribute with a value of true must be applied either explicitly or by default to the COM type for this method to create an instance of that type; otherwise, TypeLoadException is thrown.

Segurança

FileIOPermissionAccess
para a capacidade de ler o arquivo que contém o manifesto do assembly.for the ability to read the file containing the assembly manifest. Enumeração associada: ReadAssociated enumeration: Read

WebPermission
para a capacidade de acessar o local do conjunto caso o assembly não seja local.for the ability to access the location of the assembly if the assembly is not local.

Veja também

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

Cria uma nova instância de um tipo COM especificado.Creates a new instance of a specified COM type. Parâmetros especificam o nome de um arquivo que contém um assembly com o tipo e o nome do tipo.Parameters specify the name of a file that contains an assembly containing the type and the name of the type.

public:
 System::Runtime::Remoting::ObjectHandle ^ CreateComInstanceFrom(System::String ^ assemblyFile, System::String ^ typeName, cli::array <System::Byte> ^ hashValue, System::Configuration::Assemblies::AssemblyHashAlgorithm hashAlgorithm);
public System.Runtime.Remoting.ObjectHandle CreateComInstanceFrom (string assemblyFile, string typeName, byte[] hashValue, System.Configuration.Assemblies.AssemblyHashAlgorithm hashAlgorithm);
member this.CreateComInstanceFrom : string * string * byte[] * System.Configuration.Assemblies.AssemblyHashAlgorithm -> System.Runtime.Remoting.ObjectHandle
Public Function CreateComInstanceFrom (assemblyFile As String, typeName As String, hashValue As Byte(), hashAlgorithm As AssemblyHashAlgorithm) As ObjectHandle

Parâmetros

assemblyFile
String

O nome de um arquivo que contém um assembly que define o tipo solicitado.The name of a file containing an assembly that defines the requested type.

typeName
String

O nome do módulo solicitado.The name of the requested type.

hashValue
Byte[]

Representa o valor do código hash computado.Represents the value of the computed hash code.

hashAlgorithm
AssemblyHashAlgorithm

Representa o algoritmo de hash usado pelo manifesto do assembly.Represents the hash algorithm used by the assembly manifest.

Retornos

Um objeto que é um wrapper para a nova instância especificada por typeName.An object that is a wrapper for the new instance specified by typeName. O valor de retorno precisa ser desencapsulado para acessar o objeto real.The return value needs to be unwrapped to access the real object.

Exceções

assemblyName ou typeName é null.assemblyName or typeName is null.

O tipo não pode ser carregado.The type cannot be loaded.

A operação é tentada em um domínio de aplicativo descarregado.The operation is attempted on an unloaded application domain.

Nenhum construtor público sem parâmetros foi encontrado.No public parameterless constructor was found.

assemblyFile não foi encontrado.assemblyFile is not found.

typeName é uma classe abstrata.typeName is an abstract class.

- ou --or- Este membro foi invocado com um mecanismo de associação tardia.This member was invoked with a late-binding mechanism.

O chamador não pode fornecer atributos de ativação para um objeto que não seja herdado de MarshalByRefObject.The caller cannot provide activation attributes for an object that does not inherit from MarshalByRefObject.

assemblyFile é a cadeia de caracteres vazia ("").assemblyFile is the empty string ("").

assemblyFile não é um assembly válido.assemblyFile is not a valid assembly.

Um assembly ou módulo foi carregado duas vezes em com duas evidências diferentes.An assembly or module was loaded twice with two different evidences.

O objeto COM que está sendo referenciado é null.The COM object that is being referred to is null.

Comentários

Use este método para criar objetos remotamente sem precisar carregar o tipo localmente.Use this method to create objects remotely without having to load the type locally.

O valor de retorno deve ser desempacotado para acessar o objeto real.The return value must to be unwrapped to access the real object.

Um atributo System.Runtime.InteropServices.ComVisibleAttribute com um valor de true deve ser aplicado explicitamente ou por padrão ao tipo COM para esse método para criar uma instância desse tipo; caso contrário, TypeLoadException será lançada.A System.Runtime.InteropServices.ComVisibleAttribute attribute with a value of true must be applied either explicitly or by default to the COM type for this method to create an instance of that type; otherwise, TypeLoadException is thrown.

Segurança

FileIOPermissionAccess
para a capacidade de ler o arquivo que contém o manifesto do assembly.for the ability to read the file containing the assembly manifest. Enumeração associada: ReadAssociated enumeration: Read

WebPermission
para a capacidade de acessar o local do conjunto caso o assembly não seja local.for the ability to access the location of the assembly if the assembly is not local.

Veja também

Aplica-se a