継承された従来の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")
...ここの「スタイル」プロパティが赤くなります:
_UserNameLabel.Style("color") = dt1.Rows(0)("TextBoxColor")
そのラベル/コントロールに色を供給するための別の方法がありますか?私はResharperの提案を無視する方が良いでしょうか?
回答:
回答№1は2正しいオプションは次のとおりです。
Dim _UserNameLabel = DirectCast(PortalLogin.FindControl("UserNameLabel"), Label)
ザ Control
戻り値: FindControl
型としてキャストされる Label
タイプに固有のメンバーにアクセスできます Label
。それは Option Infer On
これは、 UserNameLabel
初期化式から推定される変数。と Option Infer Off
あなたは次のように書く必要があります:
Dim _UserNameLabel As Label = DirectCast(PortalLogin.FindControl("UserNameLabel"), Label)
明快にするために、とにかくやりたい人もいます。型推論はしばしば便利ですが、必須ではありません。 LINQクエリによって返される匿名型を使用する必要がある場所です。