我有一些自定义类和这些类的集合类。我实际实现所有这些都是一种新的东西,我看到了很多不同的选择,但都有各自的优点和缺点,而且我无法确定最佳/正确的方法来做我所做的事情。需要。
例如,我有一个带有ID和Description属性的Product类。我有一个ProductCollection类,我基本上想要成为一个由Product对象组成的字典。这是一本字典,因为按键值访问会有性能提升,这就是我引用对象的方式。关键是Product.ID,值为Product。
我希望能够执行类似ProductCollection.Add(Product)的操作,该集合将处理从对象的ID属性中签名字典键。我怎样才能做到最好?实现Dictionary(Of Integer,Product)并基本覆盖所有方法分别传递对象和属性?或者有更好的方法吗?
另外,为了提供更多背景信息以帮助澄清这些课程的用法,将会有一个" master"包含所有可能产品的ProductCollection实例。 ShipTo类还将包含一个ProductCollection,其中包含适用于该特定ShipTo的特定产品。我的问题特定于Product / ProductCollection类,但也适用于ShipTo类。
答案 0 :(得分:1)
这就是我收藏产品的方式。我有一个Product
类和一个Products
集合类。
首先创建包含所有属性的Product
类:
Imports System.Collections.ObjectModel
Public Class Product
Public Key As String
Public Sub New(ByVal id As Integer,
ByVal description As String)
_id = id
_description = description
End Sub
Private _id As Integer
Public ReadOnly Property ID() As Integer
Get
Return _id
End Get
End Property
Private _description As String
Public ReadOnly Property Description() As String
Get
Return _description
End Get
End Property
End Class
创建一个Products
集合类来保存Product
类:
Public Class Products
Inherits KeyedCollection(Of String, Product)
Protected Overrides Function GetKeyForItem(ByVal item As Product) As String
Return item.Key
End Function
End Class
然后你会像这样使用这些:
Dim myProducts As New Products
myProducts.Add(New Product(1,"Table"))