自定义类和集合类

时间:2016-10-12 15:40:08

标签: vb.net oop dictionary inheritance collections

我有一些自定义类和这些类的集合类。我实际实现所有这些都是一种新的东西,我看到了很多不同的选择,但都有各自的优点和缺点,而且我无法确定最佳/正确的方法来做我所做的事情。需要。

例如,我有一个带有ID和Description属性的Product类。我有一个ProductCollection类,我基本上想要成为一个由Product对象组成的字典。这是一本字典,因为按键值访问会有性能提升,这就是我引用对象的方式。关键是Product.ID,值为Product。

我希望能够执行类似ProductCollection.Add(Product)的操作,该集合将处理从对象的ID属性中签名字典键。我怎样才能做到最好?实现Dictionary(Of Integer,Product)并基本覆盖所有方法分别传递对象和属性?或者有更好的方法吗?

另外,为了提供更多背景信息以帮助澄清这些课程的用法,将会有一个" master"包含所有可能产品的ProductCollection实例。 ShipTo类还将包含一个ProductCollection,其中包含适用于该特定ShipTo的特定产品。我的问题特定于Product / ProductCollection类,但也适用于ShipTo类。

1 个答案:

答案 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"))