VB.NET .NET 3.5
作为运输系统的一部分,我有一个名为Package的聚合类。包中包含另一个类BoxType。BoxType包含有关用于运送包裹的盒子的信息,例如盒子的长度、宽度等。
Package有一个名为GetShippingRates的方法。此方法调用一个单独的帮助器类ShipRater,并将包本身作为参数传递。ShipRater检查包裹和BoxType,并返回可能的运费/方法列表。
我想要做的是构造一个接口,IRateable,它将被提供给助手类ShipRater。因此,不是:
Class ShipRater
Sub New(SomePackage as Package)
End Sub
End Class我们会这样做:
Class ShipRater
Sub New(SomeThingRateable as IRateable)
End Sub
End Class但是,ShipRater需要来自包及其聚合BoxType的信息。如果我编写一个接口IRateable,那么我如何使用BoxType属性来实现接口的一部分呢?这个是可能的吗?
发布于 2010-03-30 22:02:38
好的。只需将所需的调用委托给聚合的BoxType即可。为C#道歉:
class Package : IRateable
{
private float weight;
private BoxType box;
Size IRateable.Dimensions
{
get { return box.Dimensions; }
}
float IRateable.Weight
{
get { return weight; }
}
}发布于 2010-03-30 22:05:36
该接口不需要知道有关如何聚合调用的任何信息(可以假设并不是所有的应课税项都需要聚合调用)。将聚合(通过委托)调用留给Package
Public Interface IRateable
Function GetRate() As Double
End Interface
Public Class Package Implements IRateable
Dim _boxType As New BoxType()
'Rest of implementation'
Public Function GetRate() As Double Implements IRateable.GetRate
Return _boxType.Rate()
End Function
End Classhttps://stackoverflow.com/questions/2545772
复制相似问题