VB.NET的通用集合、成员类、设计模式问题
我有一门课叫Person:VB.NET的通用集合、成员类、设计模式问题,vb.net,generics,Vb.net,Generics,我有一门课叫Person: Public Class Person Private PersonID as String Private Name as String Private Records as GenericCollection(Of PublicRecord) Public Sub New(ByVal ID as String) Me.PersonID = ID Me.Name = getPersonName(
Public Class Person
Private PersonID as String
Private Name as String
Private Records as GenericCollection(Of PublicRecord)
Public Sub New(ByVal ID as String)
Me.PersonID = ID
Me.Name = getPersonName(ID)
End Sub
'Get/Sets
End Class
getPersonName只是一个函数,它完全按照所描述的那样工作。GenericCollection类如下所示:
Public Class GenericCollection(Of ItemType)
Inherits CollectionBase
' Purpose: Provides a generic collection class from which all other collections
' classes can be inherited if they wish to extend the functionality below.
#Region "Public Methods"
Public Function Add(ByVal NewObject As ItemType) As Integer
Return MyBase.InnerList.Add(NewObject)
End Function
Public Sub New()
MyBase.New()
End Sub
#End Region
#Region "Public Properties"
Default Public Property Item(ByVal Index As Integer) As ItemType
Get
Return CType(MyBase.InnerList(Index), ItemType)
End Get
Set(ByVal value As ItemType)
MyBase.InnerList(Index) = value
End Set
End Property
#End Region
End Class
PublicRecord类别为:
Public Class PublicRecord
Private RecordID As String
Private RecordDataOne As String
Private RecordDataTwo As String
Public Sub New()
MyBase.New()
End Sub
'Get/Sets
End Class
我被告知可以做到的一个要求是,我应该能够抓取一组人员中的所有人员,因为所有这些人员都将拥有一组记录。。。从记录集合中获取一组特定的数据
我们会说,我想:getPersonOverage21(),从Persons集合中的每个Person内的记录集合中
这可能吗?如果是这样,有人能解释一下它是如何工作的吗?没有必要实现自己的泛型集合类。Net已在System.Collections.Generic命名空间中为您完成此操作。查看一个
列表(个人)
,甚至只是一个简单的IEnumerable(个人)
现在,您还没有解释记录对象与您的个人类型的关系,或者它们包含什么数据,所以我只能推测下一部分。但听起来好像你想要这样的东西:
Dim people As List(Of Person) = GetPeopleFromDatabase()
Dim peopleOver21 As IEnumerable(Of Person) = people.Where(Function(p) p.Age >= 21)
你不明白这其中的哪一部分?你试过这个吗?让我们看看你试过什么。我可以把所有的人都收集到一个(人的)一般集合中。我假设我必须遍历GenericCollection(Of Person)并对集合的每个索引运行GetPersonOverage21():PersonCollection(0).Records.GetPersonOverage21(),但这可以在不进行实际迭代的情况下完成吗?PublicRecord对象只是Person类中的一个列表(Of PublicRecord)。一个人有多个公共记录,因此这些记录的集合在类中。人。记录就是那个集合。而且,我没有LINQ-to-SQL的奢侈。Joel正在演示LINQ-to-Object的使用。只是注意到。。。这可能行得通。不过我还不太确定。
Dim peopleOver21Query = From p In people _
Where (p.Age >= 21) _
Select p