Я действительно стараюсь следовать принципу СУХОЙ. У меня есть саб, который выглядит так?
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
в базовом классе.
Заранее спасибо.
EDIT
Вот мой конечный результат
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
Это правильно?
Сет