Функция, возвращающая список (структуры) - PullRequest
0 голосов
/ 25 января 2019

У меня есть функция, которая возвращает List(Of StructSection), где StructSection определяется следующим образом:

Public Structure StructSection 'structure for Section information
    Public SectionName As String
    Public SectiontmpName As String
    Public SectionNewName As String
    Public Section As Autodesk.Revit.DB.View
End Structure

Когда я пытаюсь использовать этот список в моем Sub Main, я получаю это сообщение:

Тип 'StructSection' не определен. (BC30002) * +1010 *

Поскольку я не определил это, для меня это имеет смысл. Но когда я определяю его, вставляя приведенное выше определение StrucSection в мой основной код, я получаю эту ошибку:

Значение типа «System.Collections.Generic.List (Of FSE.frmRenameSections.StructSection)» не может быть преобразовано в «System.Collections.Generic.List (Of FSE.ThisDocument.StructSection)». `

Несмотря на то, что две структуры были определены точно так же. Может кто-нибудь сказать мне, как использовать это List(of StructSection)? Что я действительно пытаюсь сделать, так это убедиться, что для каждого результата в списке SectionName, SectiontmpName, SectionNewName и Section остаются связанными друг с другом.

Ответы [ 2 ]

0 голосов
/ 29 января 2019

В вашем первом сообщении об ошибке упоминаются два разных класса: FSE.frmRenameSections.StructSection и FSE.ThisDocument.StructSection. Для меня это выглядит так, как если бы вы определили один и тот же класс дважды в разных областях. Попробуйте разделить StructSection на отдельный автономный класс, который не встроен ни в один другой класс. Или, если он встроен в какой-либо другой класс, назовите его явно полным именем класса, включая иерархию встраивания.

0 голосов
/ 25 января 2019

VB.NET - это типобезопасный язык. Это означает, среди прочего, что если вы объявляете один и тот же тип дважды, они считаются двумя совершенно разными и несовместимыми типами, даже если они содержат одинаковые члены.

Попробуйте это:

Sub Main()
    ' ...
    Dim result As List(Of FSE.frmRenameSections.StructSection) = MyMethod()
    ' ...
End Sub

Где MyMethod - имя метода, возвращающего список.

...