Vb.net 使用语句从内部启动子例程
我正在使用vb.net将数据从软件API提取到Excel中。有5种不同类型的类可以从中提取数据,但是有一些部分要提取的数据是相同的。我有以下几个例子:Vb.net 使用语句从内部启动子例程,vb.net,Vb.net,我正在使用vb.net将数据从软件API提取到Excel中。有5种不同类型的类可以从中提取数据,但是有一些部分要提取的数据是相同的。我有以下几个例子: Dim builder1 as PocketBuilder = CreatePocketBuilder(op1) With builder1 Sheet1.Cells(1,1) = .Feeds.Value ... Something End With Dim builder2 as BossBuilder = Crea
Dim builder1 as PocketBuilder = CreatePocketBuilder(op1)
With builder1
Sheet1.Cells(1,1) = .Feeds.Value
...
Something
End With
Dim builder2 as BossBuilder = CreateBossBuilder(op1)
With builder2
Sheet1.Cells(1,1) = .Feeds.Value
...
Something different
End With
如上所述,with语句中的某些部分是常见的,因此我想找到一种方法,将它们放入另一个要调用的子例程中(如果可能)。由于没有with语句包装它们,因此无法简单地将公共行复制到另一个子例程中。看起来您想要做的是使用一个方法来处理几个不同的类(
PocketBuilder
、BossBuilder
,以及其他三个),并使用每个类中相同的属性名称
您可以做的是在一个类中为每个类提供公共项,然后从中获取PocketBuilder
、BossBuilder
等的公共项
Module Module1
Public Class ExcelSheetStandIn
Public Property Cells As Object(,)
End Class
Public Class FeedData
Public Property Items As List(Of String)
Public ReadOnly Property Value() As String
Get
Return String.Join(", ", Items)
End Get
End Property
End Class
Public Class CommonItems
Public Property Feeds As FeedData
Public Property X As Double
Public Property Y As Double
End Class
Public Class PocketBuilder
Inherits CommonItems
Public Property Depth As Decimal
End Class
Public Class BossBuilder
Inherits CommonItems
Public Property Diameter As Decimal
End Class
Public Sub SetValues(sheet As ExcelSheetStandIn, dataSource As CommonItems)
sheet.Cells(1, 1) = dataSource.Feeds.Value
sheet.Cells(2, 1) = dataSource.X
sheet.Cells(3, 1) = dataSource.Y
End Sub
Sub Main()
Dim xl As New ExcelSheetStandIn
Dim builder1 As PocketBuilder = New PocketBuilder With {.Depth = 10D, .Feeds = New FeedData()}
SetValues(xl, builder1)
' Something
Dim builder2 As BossBuilder = New BossBuilder With {.Diameter = 5.2D, .Feeds = New FeedData()}
SetValues(xl, builder2)
' Something different
End Sub
End Module
因此,您可以看到有一个
SetValues
方法可以用于继承CommonItems
的任何类。我发现,我可以通过在模块外部声明“builder1”变量并将“builder2”变量更改为“builder1”来实现我的要求。这样做将允许我的子例程“SomeSub”使用“builder1”变量
外部模块:
Dim构建器1
在主要区域内:
builder1=CreatePocketBuilder(op1)
调用SomeSub()
与builder1
...
某物
以
builder1=CreateBossBuilder(op1)
调用SomeSub()
与builder1
...
不一样的东西
以结尾如果使用简洁的变量名,那么就没有什么理由将与。。。请以语句结尾。这对我来说太复杂(超出我的能力),无法使用,但谢谢你。@Cake you's welcome:)如果你制作一个小程序来练习,我相信你会使用它。我目前无法正确检查,但MSDN视频可能比我解释得更好。