如何在VB.NET中为WSDL

时间:2016-07-19 14:46:24

标签: vb.net web-services soap wsdl member

我有一些代码在VB.NET中填充SOAP请求。我从SQL查询中获取数据并运行对象成员来填充每个查询。我试图找到一种快速(ish)方法,在它为空时不提供成员,而不是在应用它之前检查每个值。由于SQL数据首先来自管道分隔文件,因此我们永远不会获得NULL,只是在SOAP请求中以“”形式发送的空单元格。

有没有办法使用变量而不是文字名来定义对象成员?

UpLB_request_Items.Spare8 = Convert.ToString(SourceDataSet.tables(0).Rows(i)(colSPARE8))
UpLB_request_Items.Spare9 = Convert.ToString(SourceDataSet.tables(0).Rows(i)(colSPARE9))
UpLB_request_Items.Spare10 = Convert.ToString(SourceDataSet.tables(0).Rows(i)(colSPARE10))
Call IterateObject(UpLB_request_Items)

因此,这将使用SQL数据(SourceDataSet)中的值填充每个成员,然后我可以将完成的对象发送到Sub以在我实际将其发送到Web服务之前检查每个值

Sub IterateObject(objName)
    Dim CollName = ""
    For Each m As System.Reflection.PropertyInfo In objName.GetType().GetProperties()
        If m.CanRead Then
            If m.PropertyType.Name = "String" Then
                CollName = m.Name
                Dim CollVal = CallByName(objName, CollName, CallType.Get)
                If CollVal = "" Then
                    objName.CollName = Nothing 'this is the tricky bit
                End If
            End If
        End If
    Next
End Sub

它明显中断的位是objName.CollName = Nothing因为它会说该对象没有名为CollName的成员,我不确定是否有办法强制代码将CollName评估为它的值(例如SPARE8而不是字符串“CollName”)

0 个答案:

没有答案