Durante um processo de migração para a plataforma .NET, muitas das aplicações legadas acabam ficando pra traz. Com isso, uma necessidade de mudança de negócio pode provocar alterações tanto nas novas aplicações já desenvolvidas em .NET quanto no legado do mundo COM. A idéia deste artigo é uma demonstração de como é possível desenvolver uma DLL em .Net para ser aproveitada em um programa VB 6, por exemplo.
Assim como componentes COM podem ser consumidos por aplicações .NET, o inverso também é verdadeiro. Quando componentes .Net são consumidos por objetos COM, um proxy chamado "COM Callable Wrapper (CCW)" é responsável pela transformação de todos os ítens entre .NET e COM.
Para chegarmos ao objetivo, alguns passos devem ser seguidos:
1. Criar um Projeto "class library".
2. Abra a Janela "Project Properties" clicando o botão direito em "Project" e selecionando "Properties".
3. Clique na aba "Build".
4. Selecione a opção "Register For COM Interop" na seção "Output"
Pronto, nesse ponto a aplicação está pronta para ser utilizada no mundo COM.
Vamos colocar algum código:
[ComVisible(true)]
[ClassInterface(ClassInterfaceType.None)]
public class ClasseCOM
{
private string _nome;
[ComVisible(true)]
public string Nome
{
get { return _nome; }
set { _nome = value; }
}
[ComVisible(true)]
public string NewGuidTeste()
{
return Guid.NewGuid().ToString();
}
}
Com este código da maneira que está, só poderemos utilizar a DLL no formato Late Binding, ou seja, não teremos disponível a facilidade do intellisense.
Agora os passos necessários para fazer o Early Binging:
1. Deve ser criada uma interface com todos os membros que serão expostos e a classe que será utilizada deverá implementar esta interface
[ComVisible(true)]
[ClassInterface(ClassInterfaceType.None)]
public class ClasseCOM : IClasseCOM
{
private string _nome;
[ComVisible(true)]
public string Nome
{
get { return _nome; }
set { _nome = value; }
}
[ComVisible(true)]
public string NewGuidTeste()
{
return Guid.NewGuid().ToString();
}
}
[ComVisible(true)]
public interface IClasseCOM
{
[ComVisible(true)]
string Nome { get; set; }
[ComVisible(true)]
string NewGuidTeste();
}
2. Deverá utilizar o comando "TlbExp.exe". Este comando "Type Library Exporter", será criado um arquivo .tlb para que possa ser consumido pela aplicação COM.
TlbExp.exe DLL_COM.dll
Agora, algumas regras para distribuição de DLLs COM:
1. Nenhuma classe deve ter parâmetros em seu construtor.
2. Todos os tipos que serão expostos devem ser publicos.
3. Todos os membros que serão expostos devem ser publicos.
4. Não é possível consumir classes abstratas.
Para utilizar a DLL em um aplicativo VB, basta seguir os seguintes passos:
1. Vá até Menu "Project
References...", depois clique em Browser e vá até o arquivo .tlb gerado anteriormente e o adicione.
Intellisense funcionando
2. Agora é só utilizar a DLL.
Até a Próxima
Nenhum comentário:
Postar um comentário