在VB到VB.NET类迁移期间实现接口

时间:2011-07-11 15:36:08

标签: vb.net class vb6 arcobjects

我正在将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

Err 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。

1 个答案:

答案 0 :(得分:1)

从代码的外观来看,错误表明它期望有一个UID属性,但是你的IPersistVeriant_ID属性正在返回一个IUID。

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