Vb.net 使用语句从内部启动子例程

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

我正在使用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 = 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视频可能比我解释得更好。