【问题标题】:implementing interfaces during VB to VB.NET class migration在 VB 到 VB.NET 类迁移期间实现接口
【发布时间】:2011-07-11 15:36:07
【问题描述】:

我正在将 CenterSnap.cls 从其 vb 版本迁移到 vb.NET,在将 vb6 项目导入 VS 2008 后,我对以下 2 个错误感到困惑。

错误 1

Imports System.Runtime.InteropServices
Imports ESRI.ArcGIS.esriSystem

<System.Runtime.InteropServices.ProgId("StackMap.CenterSnap")> 
Public Class CenterSnap
    Implements ESRI.ArcGIS.Editor.ISnapAgent
    Implements ESRI.ArcGIS.esriSystem.IPersistVariant ' <<<<ERROR 1

错误 1 ​​类“CenterSnap”必须为接口“ESRI.ArcGIS.esriSystem.IPersistVariant”实现“ReadOnly Property ID As UID”。实现属性必须具有匹配的“ReadOnly”或“WriteOnly”说明符。 C:\Projects\VB_ActiveX_dll\StackMap\StackMap\CenterSnap.vb 9 16 StackMap

错误 2

Private ReadOnly Property IPersistVariant_ID() As ESRI.ArcGIS.esriSystem.IUID _
Implements ESRI.ArcGIS.esriSystem.IPersistVariant.ID '<<<< ERROR 2

错误 2“IPersistVariant_ID”无法实现“ID”,因为接口“ESRI.ArcGIS.esriSystem.IPersistVariant”上没有匹配的属性。 C:\Projects\VB_ActiveX_dll\StackMap\StackMap\CenterSnap.vb 16 94 StackMap

        Get
            Dim pID As New ESRI.ArcGIS.esriSystem.UID
            pID.Value = "CenterSnap.clsCenterSnap"
            IPersistVariant_ID = pID

        End Get

为什么Implements ESRI.ArcGIS.esriSystem.IPersistVariant 没有实现?我在项目中引用了 ESRI.esriSystem。

【问题讨论】:

    标签: vb.net class vb6 arcobjects


    【解决方案1】:

    从代码的外观来看,错误表明它需要一个 UID 属性,但您的 IPersistVeriant_ID 属性返回一个 IUID。

    我不熟悉 ESRI.ArcGIS 是什么,但看起来 UID 和 IUID 不是一回事。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-30
      • 2016-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多