Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Puede crear clases derivadas de Visual Basic a partir de las clases de Public
en objetos COM, incluso aquellas creadas en versiones anteriores de Visual Basic. Las propiedades y los métodos de las clases heredadas de objetos COM se pueden invalidar o sobrecargar igual que las propiedades y los métodos de cualquier otra clase base se pueden invalidar o sobrecargar. La herencia de objetos COM es útil cuando tiene una biblioteca de clases existente que no desea volver a compilar.
En el procedimiento siguiente se muestra cómo usar Visual Basic 6.0 para crear un objeto COM que contenga una clase y, a continuación, usarlo como una clase base.
Nota:
El equipo puede mostrar nombres o ubicaciones diferentes para algunos de los elementos de la interfaz de usuario de Visual Studio en las instrucciones siguientes. La edición de Visual Studio que tiene y la configuración que usa determinan estos elementos. Para obtener más información, consulte Personalizando el IDE.
Para compilar el objeto COM que se usa en este tutorial
En Visual Basic 6.0, abra un nuevo proyecto DLL de ActiveX. Se crea un proyecto denominado
Project1
. Tiene una clase denominadaClass1
.En el Explorador de proyectos, haga clic con el botón derecho en Project1 y, a continuación, haga clic en Propiedades de Project1. Se muestra el cuadro de diálogo Propiedades del proyecto .
En la pestaña General del cuadro de diálogo Propiedades del proyecto, cambie el nombre del proyecto escribiendo
ComObject1
en el campo Nombre del proyecto .En el Explorador de proyectos, haga clic con el botón derecho en
Class1
y, a continuación, haga clic en Propiedades. Se muestra la ventana Propiedades de la clase .Cambie la
Name
propiedad aMathFunctions
.En el Explorador de proyectos, haga clic con el botón derecho en
MathFunctions
y, a continuación, haga clic en Ver código. Se muestra el Editor de código .Agregue una variable local para contener el valor de la propiedad.
' Local variable to hold property value Private mvarProp1 As Integer
Agregar los procedimientos de propiedades
Let
yGet
: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
Agregue una función:
Function AddNumbers( ByVal SomeNumber As Integer, ByVal AnotherNumber As Integer) As Integer AddNumbers = SomeNumber + AnotherNumber End Function
Cree y registre el objeto COM haciendo clic en Hacer ComObject1.dll en el menú Archivo .
Nota:
Aunque también puede exponer una clase creada con Visual Basic como un objeto COM, no es un objeto COM verdadero y no se puede usar en este tutorial. Para obtener más información, consulte Interoperabilidad COM en aplicaciones de .NET Framework.
Ensamblados de interoperabilidad
En el procedimiento siguiente, creará un ensamblado de interoperabilidad, que actúa como un puente entre código no administrado (como un objeto COM) y el código administrado que Visual Studio usa. El ensamblado de interoperabilidad que Visual Basic crea controla muchos de los detalles del uso de objetos COM, como la serialización de interoperabilidad, que es el proceso de empaquetado de parámetros y valores devueltos en tipos de datos equivalentes a medida que se mueven hacia y desde objetos COM. La referencia de la aplicación de Visual Basic apunta al ensamblado de interoperabilidad, no al objeto COM real.
Para usar un objeto COM con Visual Basic 2005 y versiones posteriores
Abra un nuevo proyecto de aplicación windows de Visual Basic.
En el menú proyecto de, haga clic en Agregar referencia.
Se muestra el cuadro de diálogo Agregar referencia .
En la pestaña COM , haga doble clic
ComObject1
en la lista Nombre del componente y haga clic en Aceptar.En el menú de proyecto , haga clic en Agregar Nuevo Elemento.
Se muestra el cuadro de diálogo Agregar nuevo elemento .
En el panel Plantillas, haga clic en Clase.
El nombre de archivo predeterminado,
Class1.vb
, aparece en el campo Nombre . Cambie este campo a MathClass.vb y haga clic en Agregar. Esto crea una clase denominadaMathClass
y muestra su código.Agregue el código siguiente a la parte superior de
MathClass
para heredar de la clase 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
Sobrecargue el método público de la clase base agregando el código siguiente 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 Function
Amplíe la clase heredada agregando el código siguiente 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
La nueva clase hereda las propiedades de la clase base en el objeto COM, sobrecarga un método y define un nuevo método para extender la clase.
Para probar la clase heredada
Agregue un botón al formulario de inicio y, a continuación, haga doble clic en él para ver su código.
En el procedimiento del controlador de eventos del
Click
botón, agregue el código siguiente para crear una instancia deMathClass
y llamar a los métodos sobrecargados: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)
Ejecute el proyecto presionando F5.
Al hacer clic en el botón del formulario, primero se llama al método AddNumbers
con números de tipo de datos Short
, y Visual Basic elige el método adecuado desde la clase base. La segunda llamada a AddNumbers
se dirige al método de sobrecarga desde MathClass
. La tercera llamada llama al SubtractNumbers
método , que extiende la clase . La propiedad de la clase base se establece y se muestra el valor.
Pasos siguientes
Es posible que haya observado que la función sobrecargada AddNumbers
parece tener el mismo tipo de datos que el método heredado de la clase base del objeto COM. Esto se debe a que los argumentos y parámetros del método de clase base se definen como enteros de 16 bits en Visual Basic 6.0, pero se exponen como enteros de 16 bits de tipo Short
en versiones posteriores de Visual Basic. La nueva función acepta enteros de 32 bits y sobrecarga la función de clase base.
Al trabajar con objetos COM, asegúrese de comprobar el tamaño y los tipos de datos de los parámetros. Por ejemplo, cuando se usa un objeto COM que acepta un objeto de colección de Visual Basic 6.0 como argumento, no se puede proporcionar una colección desde una versión posterior de Visual Basic.
Las propiedades y los métodos heredados de las clases COM se pueden invalidar, lo que significa que puede declarar una propiedad local o un método que reemplace una propiedad o método heredado de una clase COM base. Las reglas para invalidar las propiedades COM heredadas son similares a las reglas para invalidar otras propiedades y métodos con las siguientes excepciones:
Si invalida cualquier propiedad o método heredado de una clase COM, debe invalidar todas las demás propiedades y métodos heredados.
Las propiedades que usan
ByRef
parámetros no se pueden invalidar.