vb.net – 实现属性必须具有匹配的’ReadOnly’或’WriteOnly’说明符

vb.net – 实现属性必须具有匹配的’ReadOnly’或’WriteOnly’说明符,第1张

概述我有一个在idl文件中定义的接口,并尝试将vb6项目转换为vb.net. 转换从这个idl的tlb创建了interop,并且在vs2010中它抱怨该属性没有被实现(如下所示).有谁知道为什么?我甚至删除了实现并让vs2010重新生成存根,但仍然是错误. idl中的示例界面.. [ uuid(...), version(2.0), dual, nonextensible, 我有一个在IDl文件中定义的接口,并尝试将vb6项目转换为vb.net.

转换从这个IDl的tlb创建了interop,并且在vs2010中它抱怨该属性没有被实现(如下所示).有谁知道为什么?我甚至删除了实现并让vs2010重新生成存根,但仍然是错误.

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);}

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
解决方法 DATE参数类型是问题.它不是DateTime或Date,它是Double.该声明在WTypes.h SDK头文件中给出,第725行为v7.1:

typedef double DATE;

因此,通过将其声明为Double并根据需要来回转换来修复您的属性:

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

以上是内存溢出为你收集整理的vb.net – 实现属性必须具有匹配的’ReadOnly’或’WriteOnly’说明符全部内容,希望文章能够帮你解决vb.net – 实现属性必须具有匹配的’ReadOnly’或’WriteOnly’说明符所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1222253.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存