реализация интерфейсов во время миграции классов VB в VB.NET - PullRequest
0 голосов
/ 11 июля 2011

Я мигрирую CenterSnap.cls из его версии vb в vb.NET, и я запутался в следующих двух ошибках после импорта проекта vb6 в VS 2008.

Err 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» должен реализовывать «Идентификатор свойства ReadOnly в качестве UID» для интерфейса «ESRI.ArcGIS.esriSystem.IPersistVariant». Реализующее свойство должно иметь соответствующие спецификаторы 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» не может реализовать «ИД», поскольку в интерфейсе «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 Ответ

1 голос
/ 11 июля 2011

Судя по внешнему виду кода, ошибка говорит о том, что она ожидает свойство UID, но ваше свойство IPersistVeriant_ID возвращает IUID.

Я не знаю, что такое ESRI.ArcGIS, нопохоже, UID и IUID - это не одно и то же.

...