【问题标题】:Option strict disallows late binding选项严格不允许后期绑定
【发布时间】:2018-05-31 03:18:55
【问题描述】:
Private Sub btnInsert_Click(sender As Object, e As EventArgs) Handles btnInsert.Click
    Dim coinnn As New Coin()

    ' decalres variables and link them to the class library
    coinnnn.Metal.Silver = "Silver"
    coinnnn.Metal.Platinum = "Platinum"
    coinnnn.Metal.Palladium = "Palladium"
    coinnnn.Metal.Zinc = "Zinc"
    coinnnn.Metal.Nickel = "Nickel"
    coinnnn.Metal.Platinum = "Platinum"
    coinnnn.Metal.Gold = "Gold"
    coinnnn.Metal.Copper = "Copper"
    coinnnn.Currency.USD = "USD"
    coinnnn.Currency.JPY = "JPY"
    coinnnn.Currency.CHF = "CHF"
    coinnnn.Currency.CAD = "CAD"
    coinnnn.Currency.EUR = "EUR"
    coinnnn.Currency.GBP = "GBP"

    ' adds the values to the radio boxes
    If radZinc.Checked Then
        radZinc = coinnnn.Metal.Zinc
        If radSilver.Checked Then
            radSilver = coinnnn.Metal.Silver
        ElseIf radPlatinum.Checked Then
            radPlatinum = coinnnn.Metal.Platinum
            If radPalladium.Checked Then
                radPalladium = coinnnn.Metal.Palladium
                If radNickel.Checked Then
                    radNickel = coinnnn.Metal.Nickel
                ElseIf radGold.Checked Then
                    radGold = coinnnn.Metal.Gold
                    If radCopper.Checked Then
                        radCopper = coinnnn.Metal.Copper
                    End If
                End If
            End If
        End If
    End If

    ' adds the values to the drop-down list
    If cboCurrency.SelectedValue.USD Then
        cboCurrency = coinnnn.Currency.USD
        If cboCurrency.SelectedValue.EUR Then
            cboCurrency = coinnnn.Currency.EUR
        ElseIf cboCurrency.SelectedValue.GBP Then
            cboCurrency = coinnnn.SelectedValue.GBP
            If cboCurrency.SelectedValue.JPY Then
                cboCurrency = coinnnn.Currency.JPY
                If cboCurrency.SelectedValue.CHF Then
                    cboCurrency = coinnnn.Currency.CHF
                ElseIf cboCurrency.SelectedValue.CAD Then
                    cboCurrency = coinnnn.Currency.CAD
                End If
            End If
        End If
    End If

End Sub

我正在使用类库,并且不断收到错误选项严格不允许后期绑定。这个学校作业需要帮助。谢谢。

【问题讨论】:

  • 信息不足。 Coin 是否在类库中定义?那些MetalCurrency 任务在做什么?你不应该告诉班级那些类型的事情。错误在哪里?如果radZinc 之类的东西是复选框/UI 控件,则您无法在执行过程中对其进行转换或分配其他内容。你的 If 块也不会像你想象的那样工作。 IF radZinc 没有被检查,例如什么都不会被分配 - 那 箭头模式 总是一个危险信号
  • 是的,硬币是类,货币和金属是枚举
  • 枚举是整数/数字类型,因此为它们分配文本应该会失败。枚举是在编译时定义的,因此您不需要更新、初始化或“链接”它们……但是您的类可能会暴露它们(Public),因此 UI 代码按照相同的规则播放。仍然不知道错误在哪里。 (单选按钮 (?) 没有值,因此不清楚那些错误的 If 块试图做什么 - 显然将每个按钮链接到一个 Enum 项目?)。
  • 当用户点击某种金属和货币时,我需要从类库中的枚举中提取用户的答案。
  • 请记住,我们不在课堂上,也没有手边的作业。我们所知道的就是你告诉我们的,到目前为止,这远远太少了。我会当他们点击一种金属时,你想用这种金属制造一枚硬币吗? 也许 click a metal 表示那些单选按钮,以便他们选择金属和货币?无论哪种方式,UI 代码都不会将文本分配给数字枚举。抱歉,但您需要更轻松地为您提供帮助。也许阅读How to Ask

标签: vb.net binding class-library


【解决方案1】:

经过大量研究,我发现我的类库没有正确引用,我不得不通过下载更新来修复 Visual Studio,然后我重建了类库并再次引用它。现在它引用了。我已经创建了一个 for Each 循环,现在将弄清楚如何通过组合框来获取用户从类库中选择的项目列表。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-04
    • 1970-01-01
    • 1970-01-01
    • 2015-10-26
    • 1970-01-01
    • 1970-01-01
    • 2019-06-01
    • 1970-01-01
    相关资源
    最近更新 更多