调用重载函数方法

时间:2013-05-07 15:17:19

标签: .net vb.net

我有一个函数可以返回目录中的部件列表。

该函数按预期工作,但我发现还需要创建一个只返回整个零件目录子集的重载函数。

目前,我已经编写了原始函数和重载函数。

Public Function GetpartsList() As IEnumerable(Of PartsWarehouse)
    Return From p In mySession.Query(Of PartsWarehouse)()
End Function

Public Function GetpartsList(Engine As Boolean) As IEnumerable(Of PartsWarehouse)
    Return From p In mySession.Query(Of PartsWarehouse)() _
    .Where(Function(p) p.IsEngineOnly)
End Function

我称这两个函数都是这样的。

GetPartsList()
GetPartsList(isEngine)

但这似乎有点直观,因为即使我传入'引擎'的值,我也从未真正使用它。

是否有更合理的方法来重载此功能?也许我应该只有一个函数,并在里面包含某种if / else逻辑。

2 个答案:

答案 0 :(得分:2)

这不是一个过载,而是一个不同的功能。您可以将布尔值作为参数,但如果您需要创建另一个子集,在这种情况下,如果您有

,那么消费者会更好更清楚
Public Function GetEngines()...
Public Function GetPartsList()...

答案 1 :(得分:1)

你在问这样的事吗?

Public Function GetpartsList(optional Engine As Boolean = false) As IEnumerable(Of PartsWarehouse)
    dim query = mySession.Query(Of PartsWarehouse)()
    if Engine then
      query = query.Where(Function(p) p.IsEngineOnly)
    end if
    return query.ToList()
End Function