Как использовать разделяемый класс в качестве подкласса?


Я пытаюсь реализовать mySubClass.VB-файл как вложенный подкласс другого основного класса. Похоже, что идея Partial Class - это то, что мне нужно, но реализация не работает, когда я пытаюсь вытащить mySubClass.vb в качестве вложенного подкласса другого основного класса.

Моя первоначальная реализация этого кода использовала mySubClass непосредственно, поэтому я знаю, что функциональность работает. Я просто хочу использовать mySubClass в качестве структуры данных внутри clsMain.

Основной Класс

Public Class clsMain

    Public Property myIntProp as Integer
    Public property myStrProp as String
    'other properties

    Partial Public Class MySubClass
        'I want this functionality to be accessible via clsMain.MySubClass
        'Just like any other property or function of clsMain
        'Partial would keep things organized nicely
    End Class
End Class

Саб Класс

Класс.vb, который я хочу использовать в качестве clsMain.Мистический класс. Файл: MySubClass.vb

Partial Public Class MySubClass
    Inherits BaseCollection

    Private Class MySubSubClass '(Used for custom properties and functions)
        'More properties and Functions
    End Class
End Sub

Public Class BaseCollection 'functionality of MySubClass
    Public Function MyFunction1()
        'Return Data
    End Function
End Class

Как используется основной класс

Public Class UsageClass
    Private myMainDataStructure as new clsMain

    Private Sub GetSubClassList()
        dim MyData as ArrayList = myMainDataStructure.MySubClass.MyFunction1() 
        '^^^ error on this line: MyFunction1() is not a member of project.clsMain.MySubClass^^^
    End Sub
End Class
1 2

1 ответ:

Вместо того, чтобы пытаться сделать это частичным классом, вы должны просто создать свойство , содержащее экземпляр этого класса.

Вложенные классы должны быть созданы и иметь экземпляры, как и классы верхнего уровня. Создав свойство в своем основном классе, вы можете автоматически создать этот экземпляр в своем главном конструкторе класса, и ваш код будет работать должным образом.

Public Class clsMain

    Public Property myIntProp as Integer
    Public property myStrProp as String
    'other properties

    Public Property OtherFunctionality as MyOtherClass = New MyOtherClass()

Затем просто определите класс в отдельном файле:

Public Class MyOtherClass
    Public Sub MyFunction1()