gpt4 book ai didi

c# - 如何在类中创建泛型方法?

转载 作者:行者123 更新时间:2023-11-30 15:11:06 24 4
gpt4 key购买 nike

我真的在努力遵循 DRY 原则。我有一个看起来像这样的潜艇?

Private Sub DoSupplyModel

OutputLine("ITEM SUMMARIES")
Dim ItemSumms As New SupplyModel.ItemSummaries(_currentSupplyModel, _excelRows)
ItemSumms.FillRows()
OutputLine("")

OutputLine("NUMBERED INVENTORIES")
Dim numInvs As New SupplyModel.NumberedInventories(_currentSupplyModel, _excelRows)
numInvs.FillRows()
OutputLine("")

End Sub

我想使用泛型将它们合并为一个方法。郑重声明,ItemSummaries 和 NumberedInventories 都派生自同一个基类 DataBuilderBase。

我想不出允许我在方法中执行 ItemSumms.FillRows 和 numInvs.FillRows 的语法。

FillRows 在基类中声明为 Public Overridable Sub FillRows

提前致谢。

编辑
这是我的最终结果

Private Sub DoSupplyModels()

DoSupplyModelType("ITEM SUMMARIES",New DataBlocks(_currentSupplyModel,_excelRows)
DoSupplyModelType("DATA BLOCKS",New DataBlocks(_currentSupplyModel,_excelRows)

End Sub

Private Sub DoSupplyModelType(ByVal outputDescription As String, ByVal type As DataBuilderBase)
OutputLine(outputDescription)
type.FillRows()
OutputLine("")
End Sub

但要回答我自己的问题...我本可以这样做...

Private Sub DoSupplyModels()

DoSupplyModelType(Of Projections)("ITEM SUMMARIES")
DoSupplyModelType(Of DataBlocks)("DATA BLOCKS")

End Sub

Private Sub DoSupplyModelType(Of T as DataBuilderBase)(ByVal outputDescription As String, ByVal type As T)
OutputLine(outputDescription)
Dim type as New DataBuilderBase (_currentSupplyModel,_excelRows)
type.FillRows()
OutputLine("")
End Sub

是这样吗?

赛斯

最佳答案

正如其他人所指出的,您不需要泛型来做您想做的事,但为了完整性,我会回答技术问题:

Private Sub MyMethod(Of T As DataBuilderBase)(ByVal instance As T)
instance.FillRows()
End Sub

然后调用这个方法:

MyMethod(Of ItemSummaries)(new SupplyModel.ItemSummaries(...))

关于c# - 如何在类中创建泛型方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2731712/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com