【问题标题】:How do I use a partial class as a subclass?如何使用部分类作为子类?
【发布时间】:2013-05-27 17:49:49
【问题描述】:

我正在尝试将 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

子类

我想用作 clsMain.MySubClass 的 class.vb。 文件: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

【问题讨论】:

    标签: vb.net subclass partial-classes


    【解决方案1】:

    您应该只创建一个包含该类实例的Property,而不是尝试将其设为部分类。

    嵌套类必须创建并具有实例,就像顶级类一样。通过在主类中创建属性,您可以在主类构造函数中自动创建该实例,并且您的代码将按预期工作。

    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()
    

    【讨论】:

    • 哇,这实际上解决了我在设置中遇到的许多其他复杂问题。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多