Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Você pode derivar classes do Visual Basic de Public classes em objetos COM, mesmo aquelas criadas em versões anteriores do Visual Basic. As propriedades e os métodos de classes herdados de objetos COM podem ser substituídos ou sobrecarregados assim como propriedades e métodos de qualquer outra classe base podem ser substituídos ou sobrecarregados. A herança de objetos COM é útil quando você tem uma biblioteca de classes existente que não deseja recompilar.
O procedimento a seguir mostra como usar o Visual Basic 6.0 para criar um objeto COM que contém uma classe e usá-lo como uma classe base.
Observação
Seu computador pode mostrar nomes ou locais diferentes para alguns dos elementos de interface do usuário do Visual Studio nas instruções a seguir. A edição do Visual Studio que você tem e as configurações que você usa determinam esses elementos. Para obter mais informações, consulte Personalizando o IDE.
Para criar o objeto COM usado neste passo a passo
No Visual Basic 6.0, abra um novo projeto de DLL ActiveX. Um projeto nomeado
Project1é criado. Tem uma classe chamadaClass1.No Gerenciador de Projetos, clique com o botão direito do mouse em Project1 e clique em Propriedades do Project1. A caixa de diálogo Propriedades do Projeto é exibida.
Na guia Geral da caixa de diálogo Propriedades do Projeto , altere o nome do projeto digitando
ComObject1no campo Nome do Projeto .No Gerenciador de Projetos, clique com o botão direito do mouse
Class1e clique em Propriedades. A janela Propriedades da classe é exibida.Altere a
Namepropriedade paraMathFunctions.No Gerenciador de Projetos, clique com o botão direito do mouse
MathFunctionse clique em Exibir Código. O Editor de Código é exibido.Adicione uma variável local para manter o valor da propriedade:
' Local variable to hold property value Private mvarProp1 As IntegerAdicione os procedimentos de propriedade Property
Lete PropertyGets:Public Property Let Prop1(ByVal vData As Integer) 'Used when assigning a value to the property. mvarProp1 = vData End Property Public Property Get Prop1() As Integer 'Used when retrieving a property's value. Prop1 = mvarProp1 End PropertyAdicione uma função:
Function AddNumbers( ByVal SomeNumber As Integer, ByVal AnotherNumber As Integer) As Integer AddNumbers = SomeNumber + AnotherNumber End FunctionCrie e registre o objeto COM clicando em Fazer ComObject1.dll no menu Arquivo .
Observação
Embora você também possa expor uma classe criada com o Visual Basic como um objeto COM, ele não é um objeto COM verdadeiro e não pode ser usado neste passo a passo. Para obter detalhes, consulte Interoperabilidade COM em aplicativos do .NET Framework.
Assemblies de Interoperabilidade
No procedimento a seguir, você criará um assembly de interoperabilidade, que atua como uma ponte entre código não gerenciado (como um objeto COM) e o código gerenciado que o Visual Studio usa. O assembly de interoperabilidade que o Visual Basic cria manipula muitos dos detalhes de trabalhar com objetos COM, como o agrupamento de interoperabilidade, o processo de empacotamento de parâmetros e os valores retornados em tipos de dados equivalentes à medida que eles se movem de e para objetos COM. A referência no aplicativo Visual Basic aponta para o assembly de interoperabilidade, não o objeto COM real.
Para usar um objeto COM com o Visual Basic 2005 e versões posteriores
Abra um novo projeto do Aplicativo Windows do Visual Basic.
No menu do Projeto, clique em Adicionar Referência.
A caixa de diálogo Adicionar Referência é exibida.
Na guia COM , clique
ComObject1duas vezes na lista Nome do Componente e clique em OK.No menu Project, clique em Adicionar Novo Item.
É apresentada a caixa de diálogo Adicionar Novo Item .
No painel Modelos , clique em Classe.
O nome do arquivo padrão aparece
Class1.vbno campo Nome . Altere esse campo para MathClass.vb e clique em Adicionar. Isso cria uma classe chamadaMathClasse exibe seu código.Adicione o código a seguir ao topo de
MathClasspara herdar da classe COM.' The inherited class is called MathFunctions in the base class, ' but the interop assembly appends the word Class to the name. Inherits ComObject1.MathFunctionsClassSobrecarrege o método público da classe base adicionando o seguinte código a
MathClass:' This method overloads the method AddNumbers from the base class. Overloads Function AddNumbers( ByVal SomeNumber As Integer, ByVal AnotherNumber As Integer) As Integer Return SomeNumber + AnotherNumber End FunctionEstenda a classe herdada adicionando o seguinte código a
MathClass:' The following function extends the inherited class. Function SubtractNumbers( ByVal SomeNumber As Integer, ByVal AnotherNumber As Integer) As Integer Return AnotherNumber - SomeNumber End Function
A nova classe herda as propriedades da classe base no objeto COM, sobrecarrega um método e define um novo método para estender a classe.
Para testar a classe herdada
Adicione um botão ao formulário de inicialização e clique duas vezes nele para exibir seu código.
No procedimento do manipulador de eventos do
Clickbotão, adicione o seguinte código para criar uma instânciaMathClasse chamar os métodos sobrecarregados:Dim Result1 As Short Dim Result2 As Integer Dim Result3 As Integer Dim MathObject As New MathClass Result1 = MathObject.AddNumbers(4S, 2S) ' Add two Shorts. Result2 = MathObject.AddNumbers(4, 2) 'Add two Integers. Result3 = MathObject.SubtractNumbers(2, 4) ' Subtract 2 from 4. MathObject.Prop1 = 6 ' Set an inherited property. MsgBox("Calling the AddNumbers method in the base class " & "using Short type numbers 4 and 2 = " & Result1) MsgBox("Calling the overloaded AddNumbers method using " & "Integer type numbers 4 and 2 = " & Result2) MsgBox("Calling the SubtractNumbers method " & "subtracting 2 from 4 = " & Result3) MsgBox("The value of the inherited property is " & MathObject.Prop1)Execute o projeto pressionando F5.
Quando você clica no botão no formulário, o método AddNumbers é chamado primeiro com números do tipo de dados Short e o Visual Basic escolhe o método apropriado da classe base. A segunda chamada a AddNumbers é direcionada para o método de sobrecarga de MathClass. A terceira chamada chama o SubtractNumbers método, que estende a classe. A propriedade na classe base é definida e o valor é exibido.
Próximas etapas
Você deve ter notado que a função sobrecarregada AddNumbers parece ter o mesmo tipo de dados que o método herdado da classe base do objeto COM. Isso ocorre porque os argumentos e parâmetros do método de classe base são definidos como inteiros de 16 bits no Visual Basic 6.0, mas são expostos como inteiros de 16 bits do tipo Short em versões posteriores do Visual Basic. A nova função aceita inteiros de 32 bits e sobrecarrega a função de classe base.
Ao trabalhar com objetos COM, verifique o tamanho e os tipos de dados dos parâmetros. Por exemplo, quando você está usando um objeto COM que aceita um objeto de coleção do Visual Basic 6.0 como argumento, não é possível fornecer uma coleção de uma versão posterior do Visual Basic.
Propriedades e métodos herdados de classes COM podem ser substituídos, o que significa que você pode declarar uma propriedade local ou método que substitui uma propriedade ou método herdado de uma classe COM base. As regras para substituir as propriedades COM herdadas são semelhantes às regras para substituir outras propriedades e métodos com as seguintes exceções:
Se você substituir alguma propriedade ou método herdado de uma classe COM, precisará substituir todas as outras propriedades e métodos herdados.
As propriedades que usam
ByRefparâmetros não podem ser substituídas.