首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在vb.net中,接口可以跨聚合/复合类实现吗?

在vb.net中,接口可以跨聚合/复合类实现吗?
EN

Stack Overflow用户
提问于 2010-03-30 22:01:10
回答 2查看 397关注 0票数 1

VB.NET .NET 3.5

作为运输系统的一部分,我有一个名为Package的聚合类。包中包含另一个类BoxType。BoxType包含有关用于运送包裹的盒子的信息,例如盒子的长度、宽度等。

Package有一个名为GetShippingRates的方法。此方法调用一个单独的帮助器类ShipRater,并将包本身作为参数传递。ShipRater检查包裹和BoxType,并返回可能的运费/方法列表。

我想要做的是构造一个接口,IRateable,它将被提供给助手类ShipRater。因此,不是:

代码语言:javascript
复制
Class ShipRater
    Sub New(SomePackage as Package)
    End Sub
End Class

我们会这样做:

代码语言:javascript
复制
 Class ShipRater
    Sub New(SomeThingRateable as IRateable)
    End Sub
End Class

但是,ShipRater需要来自包及其聚合BoxType的信息。如果我编写一个接口IRateable,那么我如何使用BoxType属性来实现接口的一部分呢?这个是可能的吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-03-30 22:02:38

好的。只需将所需的调用委托给聚合的BoxType即可。为C#道歉:

代码语言:javascript
复制
class Package : IRateable
{
    private float weight;
    private BoxType box;

    Size IRateable.Dimensions
    {
        get { return box.Dimensions; }
    }

    float IRateable.Weight
    {
        get { return weight; }
    }
}
票数 0
EN

Stack Overflow用户

发布于 2010-03-30 22:05:36

该接口不需要知道有关如何聚合调用的任何信息(可以假设并不是所有的应课税项都需要聚合调用)。将聚合(通过委托)调用留给Package

代码语言:javascript
复制
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 Class
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2545772

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档