System.TypeLoadException: типы, выходящие из объектов COM, должны переопределять все методы интерфейса, реализованные базовым классом COM - PullRequest
0 голосов
/ 06 февраля 2019

Хорошо, вот ситуация.Я ищу, чтобы пользовательское расширение arcobjects vb.net работало правильно на ArcMap10.5.При загрузке узлов в программе просмотра вложений я получаю следующую ошибку при вызове Private Sub LoadNodes ().

System.TypeLoadException: типы, выходящие из COM-объектов, должны переопределять все методы интерфейса, реализованные базовым COM-классом.

Если я удаляю эти строки из LoadNodes (), я не получаюSystem.TypeLoadException: и программа запускается через LoadNodes (), но явно терпит неудачу из-за отсутствия таблицы вложений.

        ' Get relAttachments table and set selection table for it
        Dim relAttach As ESRI.ArcGIS.Carto.StandaloneTable = New cAttachStandAloneTable(mFWS.OpenTable(modDBNaming.GetQualifiedTableName("RelAttachments", mFWS)), "FCName")
        mRelAttachSel = relAttach

Каким-то образом эта проблема связана с более новой средой, поскольку эта проблема не возникает в старой среде.

Текущая среда: Visual Studio 13 .net framework 4.5 ArcMap и Arcobjects 10.5 (10.4 имеет ту же проблему)

Старая среда: Visual Studio 8 .net framework 3.5 ArcMap и ArcAobjects 10.2.2и старше

Private Sub LoadNodes()
    Try
        lblStatus.Text = "Populating the tree view with the database layers"
        Me.Cursor = Windows.Forms.Cursors.AppStarting

        ' Get relAttachments table and set selection table for it
        Dim relAttach As ESRI.ArcGIS.Carto.StandaloneTable = New cAttachStandAloneTable(mFWS.OpenTable(modDBNaming.GetQualifiedTableName("RelAttachments", mFWS)), "FCName")
        mRelAttachSel = relAttach

        ' Load relAttachments into dataset datatable
        PopulateRelAttachmentsTable(relAttach.Table)
        Dim relAttachDV As DataView = New DataView(mDataset.Tables("relAttachments"))

        ' Clear out reachnodes hashtable
        mReachNodes.Clear()

        ' Run through any selected features and store in table
        If mStandAlone = False Then
            PopulateSelectionTable()
        End If
        Dim selDV As DataView = New DataView(mDataset.Tables("Selection"))

        ' Clear the tree
        tvStream.Nodes.Clear()
...