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