VB.NET从字符串数据中选择特定的嵌套类

时间:2014-05-08 11:40:30

标签: vb.net nested-class

抱歉,如果这是不稳定的,因为我是编程的新手。我一直在寻找这方面的帮助,但我不确定我究竟缺少什么并寻找。

我编辑了这个以尝试解释最终目标。

该队员有两支军队,每支军队有五支队伍,每支队伍有五名士兵。 每个士兵都有一个名称,级别,健康状况和xp,需要从数据库加载到正确的类中。

目前我将它设置为嵌套类Army#.Squad#.Soldier#.Property

从数据库中我可以调用包含哪个军队的单元格>小队>士兵数据库行涉及。

我想要做的是使用循环从数据库填充,因为有数百种可能的组合。

V1 = Cell1
V2 = Cell2
V2 = Cell3
V4 = Cell4
V1.V2.V3.Health = V4

2 个答案:

答案 0 :(得分:0)

我认为你混淆了实例和类。您可能不需要5个Squad Classes ,但可能只需要5个实例。考虑:

Friend Class Army
     ' an army is made up of 5 squads, so we need 
     ' 5 runtime instances of the Squad Class (lists are like arrays)
     Private squadList As New List(of Squad)

     ' identifier is something the code uses to 
     ' know which to add.  Maybe it is the SquadID from teh DB or name
     ' hard to tell
     Public Sub AddSquad(Identifier As Integer)
         ' create a new Squad instance
         Dim sq As New Squad(maybe some ID)
         ' add new squad to the LIST we are using   
         squadList.Add(sq)
     End Sub        

     Public Sub RemoveSquad(name As String)
        ' a squad died in battle; find them and remove them

        squadList.Remove(indexOfSquadnamed)
        ' now there are only 4
     End Sub

End Class

" smarts"建造Squad将在Squad Class中。您可能有一种方法可以根据ID从DB加载小队,另一种方法可以在转弯结束时将小队保存到数据库等。您可以在军队的循环中调用此方法,以便保存或加载目前每个小队都有。

即使SquadB与SquadA不同,它也可能由属性处理和/或由List(of Soldier)组成。{/ p>

这是一个抽象的例子。陆军可能永远不会从列表中移除一个小队,但将其标记为Active = False,以便在转弯结束时,移除死亡小队,添加新的小队。

答案 1 :(得分:0)

索引属性将最接近您想要的属性。

Class Army
    Private _Squads(5) As Squad

    Property Squad( ByVal index as Integer ) As Squad
        Get
            Return _Squads( index )
        End Get

        Set( Byval this as Squad )
            _Squads( index ) = this
        End Set
    End Property

    'More
End Class

Class Squad
    Private _Units( 5 ) As Unit

    Property Unit( ByVal index as Integer ) As Unit
        'Same, but use _Units
    End Property
End Class

Class Unit

End Class

然后您可以执行以下操作

Dim x As New Army
x.Squads( 1 ) = New Squad( )
x.Squads( 1 ).Units( 1 ) = New Unit

单位也可以是一个界面,或者如果你有剑士,龙,士兵,机器人或其他单位类型的东西,它可以只是你所有单位继承的类。

我还没有对它进行过测试,但它应该让你了解一种方法。