0

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

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

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

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 逻辑。

4

2 回答 2

2

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

Public Function GetEngines()...
Public Function GetPartsList()...
于 2013-05-07T15:22:26.940 回答
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
于 2013-05-07T15:21:40.867 回答