Partilhar via


Passo a passo: Implementando a herança com objetos COM (Visual Basic)

Você pode derivar classes de Visual Basic de Public classes de objetos COM , mesmo aqueles criados em versões anteriores do Visual Basic. As propriedades e métodos das classes herdadas 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. Herança de objetos COM é útil quando você tem uma classeexistentebiblioteca que não deseja recompilar.

O procedimento a seguir mostra como usar o Visual Basic 6.0 para criar COM objeto que contém uma classee usá-lo como uma classe base.

ObservaçãoObservação

Seu computador pode mostrar nomes ou locais diferentes para alguns dos elementos da interface do usuário do Visual Studio nas instruções a seguir. A edição do Visual Studio que você possui e as configurações que você usa determinam esses elementos. Para obter mais informações, consulte Configurações do Visual Studio.

Para criar COM objeto que é usado neste passo a passo

  1. No Visual Basic 6.0, em aberto um novo projetode DLL de ActiveX. Um projeto chamado Project1 é criado. Ele tem uma classe chamada Class1.

  2. No Project Explorer, à direita-clique Projeto1e em seguida, clique em Propriedadesde Projeto1. O Propriedadesdo projetocaixa de diálogo é exibida.

  3. No Geral guia do Propriedadesdo projeto caixa de diálogo, altere o nome do projeto , digitando ComObject1 na o Nomedo projetocampo.

  4. No Project Explorer, à direita clique de- Class1e, em seguida, clique em Propriedades. O Propriedadesajanela para a classe é exibida.

  5. Alterar o Namedepropriedade para MathFunctions.

  6. No Project Explorer, à direita clique de- MathFunctionse, em seguida, clique em Exibir Código. O o Editor deCódigo é exibido.

  7. Adicionar uma variável de local para armazenar o valor da propriedade :

    ' Local variable to hold property value
    Private mvarProp1 As Integer
    
  8. Adicionar Propriedade Let e a propriedade Getos procedimentos depropriedade :

    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 Property
    
  9. Adicionar uma função:

    Function AddNumbers( 
       ByVal SomeNumber As Integer, 
       ByVal AnotherNumber As Integer) As Integer
    
       AddNumbers = SomeNumber + AnotherNumber
    End Function
    
  10. Criar e registrar COM objeto clicando em ComObject1.dll fazer sobre o Arquivo menu.

    ObservaçãoObservação

    Embora você também pode expor uma classe criada com Visual Basic como umobjetodo COM, ele é não uma verdadeira da COMobjeto e não pode ser usado nesta explicação passo a passo. For details, see Interoperabilidade COM em aplicativos .NET Framework (Visual Basic).

Interop Assemblies

O seguinte procedimento, você irá criar um interop assembly, que atua como uma ponte entre código não gerenciado (como umobjetodo COM) e o código gerenciado Visual Studio usa. O assembly de interoperabilidade que Visual Basic cria alças muitos detalhes de trabalhar COM objetos, como marshaling de interoperabilidade, o processo de parâmetros de empacotamento e valores de retorno em dados equivalentes tipos conforme são movidas para e de objetos COM . A referência a Visual Basic aplicativo aponta para o interop assembly, não real COM objeto.

Para usar umobjeto do COMo Visual Basic 2005 e versões posteriores

  1. Open a new Visual Basic Windows Application project.

  2. On the Project menu, click Add Reference.

    The Add Reference dialog box is displayed.

  3. No COM guia o duplo clique de- ComObject1 no Nome do Componente lista e clique em OK.

  4. On the Project menu, click Add New Item.

    The Add New Item dialog box is displayed.

  5. No modelos de opainel, clique em classe.

    O nome de arquivo padrão, Class1.vb, consta o Nome campo. Alterar este campo para MathClass.vb e clique em Adicionar. Isso cria uma classe chamada MathClasse exibe o código.

  6. Adicionar o seguinte código para o topo da MathClass para herdar daclassede COM.

    ' The inherited class is called MathFunctions in the base class,
    ' but the interop assembly appends the word Class to the name.
    Inherits ComObject1.MathFunctionsClass
    
  7. O método público da classe base de sobrecarga, adicionando o seguinte código para 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 Function
    
  8. Estende a classe herdada, adicionando o seguinte código para 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 COMobjetosobrecarrega um métodoe define um novo método para estender a classe.

Para teste a classeherdada

  1. Adicionar um botão ao formuláriosua inicialização e, em seguida, double-clicar nele para exibir seu código.

  2. O botão Clickmanipulador deevento procedimento, adicione o seguinte código para criar uma instância de MathClass e 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)
    
  3. Run the project by pressing F5.

Quando você clica no botão no formulário, o AddNumbersmétodo é chamado primeiro com Shorttipo de dados de números, e Visual Basic escolhe o método apropriado da classe base. A segunda chamada para AddNumbers é direcionado para a sobrecarga método de MathClass. A terceira chamada chamadas a SubtractNumbers método, que estende a classe. A propriedade na classe base está definida e o valor é exibido.

Próximas etapas

Você deve ter notado que o sobrecarregado AddNumbersfunção parece ter o mesmo tipo de dados como o método herdadas da classe base doobjetode COM. Isso ocorre porque os argumentos e os parâmetros dométodo de classe basesão definidos como 16-inteiros de bit no Visual Basic 6.0, mas eles são expostos como 16-bits de inteiros do tipo Short em versões posteriores do Visual Basic. A nova função aceita inteiros de bits de-32 e sobrecarrega afunçãode classe base.

Ao trabalhar com objetos COM , certifique-se de que você verifique se o tamanho e tipos de dados de parâmetros. Por exemplo, quando você estiver usando umobjeto de COMque aceita uma coleçãode Visual Basic 6.0objeto como um argumento, você não pode 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 um local de propriedade ou método que substitui uma propriedade ou método herdado de uma base de COM classe. As regras de substituição COM as propriedades herdadas são semelhantes às regras de substituição de outras propriedades e métodos com as seguintes exceções:

  • Se você substituir qualquer propriedade ou método herdado de umaclassede COM, você deve substituir herdado por todos os outros métodos e propriedades.

  • Propriedades que usam ByRef parâmetros não podem ser substituídos.

Consulte também

Referência

Declaração Inherits

Tipo de dados Short (Visual Basic)

Outros recursos

Interoperabilidade COM em aplicativos .NET Framework (Visual Basic)