vb.net com vb6 vb6-migration idl

vb.net - La implementación de la propiedad debe tener especificadores ''ReadOnly'' o ''WriteOnly'' que coincidan



com vb6 (1)

Tengo una interfaz definida en un archivo idl e intento convertir un proyecto vb6 en vb.net.

La conversión creó la interoperabilidad desde el tlb de este idl y en vs2010 se queja de que la propiedad no se está implementando (como se muestra a continuación). ¿Alguien tiene alguna idea de por qué? Incluso eliminé la implementación y obtuve vs2010 para regenerar el apéndice y todavía errores.

interfaz de ejemplo en el IDL ..

[ uuid(...), version(2.0), dual, nonextensible, oleautomation ] interface IExampleInterface : IDispatch { ... [id(3), propget] HRESULT CloseDate ([out, retval] DATE* RetVal); [id(3), propput] HRESULT CloseDate ([in] DATE* InVal); }

Clase VB.Net ...

<System.Runtime.InteropServices.ProgId("Project1_NET.ClassExample")> Public Class ClassExample Implements LibName.IExampleInterface Public Property CloseDate As Date Implements LibName.IExampleInterface.CloseDate Get Return mDate End Get Set(value As Date) mDate = value End Set End Property


El tipo de argumento DATE es el problema. No es un DateTime o Date, es un Double . La declaración se proporciona en el archivo de encabezado WTypes.h SDK, línea # 1025 para v7.1:

typedef double DATE;

Por lo tanto, corrija su propiedad declarándola como doble y conviértalo de uno a otro según sea necesario:

Public Property CloseDate As Double Implements LibName.IExampleInterface.CloseDate Get Return mDate.ToOADate End Get Set(value As Date) mDate = DateTime.FromOADate(value) End Set End Property