【发布时间】:2016-12-01 23:00:39
【问题描述】:
在尝试净化继承的遗留 VB.NET / ASP 项目时,我正在对其进行重新锐化,它告诉我,“将 'System.Web.UI.Control' 转换为 ' 时可能会出现运行时错误System.Web.UI.WebControls.Label'" 在这一行:
Dim _UserNameLabel As Label = PortalLogin.FindControl("UserNameLabel")
...但是当我默认并让它改成这样时:
Dim _UserNameLabel As Control = PortalLogin.FindControl("UserNameLabel")
...这里的“Style”属性变红了:
_UserNameLabel.Style("color") = dt1.Rows(0)("TextBoxColor")
是否有另一种方法可以为该标签/控件提供颜色,我最好忽略 Resharper 的建议,还是什么?
【问题讨论】:
-
两者都不会使用
Option Strict On编译。 FindControl 返回一个 Control,Style不是 Control 的属性。将退货投给标签。 -
最大的净化来自于打开 Option Strict。它可能有助于解决其他谜团
-
选项 > 项目和解决方案 > VB 默认值 > 选项显式已打开;不过,Option Strict 是 Off...Option Infer,不管是什么,都是 On,最后 Option Compare 是 Binary。
-
这些是新项目的默认值。 项目属性 --> 编译 --> Option Strict On 始终打开。将其调入并撕下旋钮。它会阻止您使用隐式转换(Q 中的第一个场景)和使用后期绑定(第二个)进行编译
标签: vb.net runtime-error resharper