我有一个函数可以返回目录中的部件列表。
该函数按预期工作,但我发现还需要创建一个只返回整个零件目录子集的重载函数。
目前,我已经编写了原始函数和重载函数。
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逻辑。
答案 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