VB 2008.NET 3.5
假设我们有两个类,Order 和 OrderItem,它们代表某种类型的在线订购系统。 OrderItem 表示订单中的单个订单项。一个 Order 可以包含多个 OrderItem,以 List(of OrderItem) 的形式。
Public Class Order
Public Property MyOrderItems() as List(of OrderItem)
End Property
End Class
OrderItem 在没有 Order 的情况下不应该存在,这是有道理的。换句话说,一个 OrderItem 类不应该能够被自己实例化,它应该依赖于一个 Order 类来包含它并实例化它。但是,OrderItem 在范围内应该是公共(public)的,以便其他对象可以访问它的属性。因此,OrderItem 的要求是:
只能由Order类实例化。
必须是公共(public)的,这样任何其他对象都可以通过 Order 对象访问它的属性/方法。例如Order.OrderItem(0).ProductID.
OrderItem 应该能够传递给将对其进行操作的其他子/函数。
我怎样才能实现这些目标?有没有更好的方法?
最佳答案
您可以创建一个 OrderItem
的构造函数,它接受一个 Order
项目。
在此构造函数中,您可以将 OrderItem
添加到 Order.MyOrderItems
集合中。
这将满足您的要求。
Public Class OrderItem
Public Sub New(ByRef myOrder As Order)
myOrder.MyOrderItems.Add(Me)
End Sub
End Class
- 您只能通过向其传递有效的
Order
对象来实例化OrderItem
。 - 仍然是公开的,可以根据需要调用(
Order.OrderItem(0).ProductID
)。 - OrderItem 可以传递给其他子程序和函数。
关于vb.net - 是否可以将一个对象的实例化限制为 VB.NET 中的另一个(父)对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2722986/