作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我真的在努力遵循 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/
我是一名优秀的程序员,十分优秀!