如何获取要运行的Public类的构造函数

时间:2017-02-21 22:04:22

标签: vb.net class dictionary constructor

我在vb.net中有一个带有公共共享字典的Public类。构造函数似乎没有运行。我在构造函数中有一个断点,它不会中断。此外,当我进行数据库更新时,新值不会显示在字典中。

Public Class SkywalkerPolicy

Public Shared CustomPolicies As Dictionary(Of String, String)

Shared Sub New()
    CustomPolicies = New Dictionary(Of String, String)
    Dim bvin As String = String.Empty
    Dim title As String = String.Empty
    Dim poldescr As String = String.Empty
    Dim dtResult As New DataTable("Result")
    dtResult.Locale = System.Globalization.CultureInfo.InvariantCulture
    Dim request As New DataRequest

    request.Command = "sky_PolicyDictionary_s"
    request.CommandType = CommandType.StoredProcedure

    request.Transactional = False
    Dim result As DataSet
    result = SqlDataHelper.ExecuteDataSet(request)

    If Not result Is Nothing Then
        If result.Tables.Count() > 0 Then
            dtResult = result.Tables(0)
            For Each row In dtResult.AsEnumerable
                bvin = row.Item(1)
                title = row.Item(0)
                poldescr = row.Item(2)
                If CustomPolicies.ContainsKey(title) Then
                    CustomPolicies(title) += poldescr
                Else
                    CustomPolicies.Add(title, poldescr)
                End If
            Next
        End If
    End If

End Sub
End Class

当我访问字典时,我对数据所做的任何更改都不会显示。

Dim pol As String = SkywalkerPolicy.CustomPolicies("Orders and Shipping Details")

有没有人对如何让构造函数起作用有任何建议?

或者我应该在使用之前有一个额外的Sub重复初始化字典吗?

由于

1 个答案:

答案 0 :(得分:-1)

我有一个更新例程的解决方法,我在访问字典之前调用它。但我仍然不清楚为什么我不能逐步完成构造函数。因此,如果有人可以回答原始问题,我将不胜感激。谢谢。

Public Class SkywalkerPolicy

Public Shared CustomPolicies As Dictionary(Of String, String)

Shared Sub New()
    CustomPolicies = New Dictionary(Of String, String)
    Dim bvin As String = String.Empty
    Dim title As String = String.Empty
    Dim poldescr As String = String.Empty
    Dim dtResult As New DataTable("Result")
    dtResult.Locale = System.Globalization.CultureInfo.InvariantCulture
    Dim request As New DataRequest

    request.Command = "sky_PolicyDictionary_s"
    request.CommandType = CommandType.StoredProcedure

    request.Transactional = False
    Dim result As DataSet
    result = SqlDataHelper.ExecuteDataSet(request)

    If Not result Is Nothing Then
        If result.Tables.Count() > 0 Then
            dtResult = result.Tables(0)
            For Each row In dtResult.AsEnumerable
                bvin = row.Item(1)
                title = row.Item(0)
                poldescr = row.Item(2)
                If CustomPolicies.ContainsKey(title) Then
                    CustomPolicies(title) += poldescr
                Else
                    CustomPolicies.Add(title, poldescr)
                End If
            Next
        End If
    End If

End Sub

Public Shared Sub UpdateDictionary()
    CustomPolicies.Clear()
    Dim bvin As String = String.Empty
    Dim title As String = String.Empty
    Dim poldescr As String = String.Empty
    Dim dtResult As New DataTable("Result")
    dtResult.Locale = System.Globalization.CultureInfo.InvariantCulture
    Dim request As New DataRequest

    request.Command = "sky_PolicyDictionary_s"
    request.CommandType = CommandType.StoredProcedure

    request.Transactional = False
    Dim result As DataSet
    result = SqlDataHelper.ExecuteDataSet(request)

    If Not result Is Nothing Then
        If result.Tables.Count() > 0 Then
            dtResult = result.Tables(0)
            For Each row In dtResult.AsEnumerable
                bvin = row.Item(1)
                title = row.Item(0)
                poldescr = row.Item(2)
                If CustomPolicies.ContainsKey(title) Then
                    CustomPolicies(title) += poldescr
                Else
                    CustomPolicies.Add(title, poldescr)
                End If
            Next
        End If
    End If
End Sub

结束班

相关问题