我有一个返回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)
由于我尚未定义它,因此对我来说很有意义。但是,当我通过将上面的StrucSection
定义粘贴到我的主代码中来定义它时,出现此错误:
类型'System.Collections.Generic.List(Of FSE.frmRenameSections.StructSection)'的值不能转换为'System.Collections.Generic.List(Of FSE.ThisDocument.StructSection)'。
即使两个结构的定义完全相同。谁能告诉我如何使用该List(of StructSection)
?我真正想做的是确保列表中的每个结果都SectionName
,SectiontmpName
,SectionNewName
和Section
保持关联。 / p>
答案 0 :(得分:2)
VB.NET是一种类型安全的语言。这意味着,如果您两次声明相同的类型,即使它们包含完全相同的成员,它们也被视为两个完全不同且不兼容的类型。
尝试一下:
Sub Main()
' ...
Dim result As List(Of FSE.frmRenameSections.StructSection) = MyMethod()
' ...
End Sub
MyMethod
是返回列表的方法的名称。
答案 1 :(得分:0)
您的第一条错误消息提到了两个不同的类:FSE.frmRenameSections.StructSection
和FSE.ThisDocument.StructSection
。对我来说,这好像您在不同的范围内两次定义了相同的类。尝试将StructSection
拆分为自己的独立类,该类未嵌入任何其他类中。或者,如果它嵌入在其他某个类中,则使用其完整的类名(包括嵌入层次结构)显式地对其进行命名。