/ Je nevyhnutné, aby som zmenil štítok na kontrolu, aby sa zabránilo možnej bežnej chybe? - vb.net, runtime-error, resharper

Je nevyhnutné, aby som zmenil štítok na kontrolu, aby sa zabránilo možnej bežnej chybe? - vb.net, runtime-error, resharper

Pokúšam sa očistiť zdedený dedičský projekt VB.NET / ASP, rozmaznávam ho a hovorí mi:Runtime chyby sa môžu vyskytnúť pri konverzii "System.Web.UI.Control" na "System.Web.UI.WebControls.Label""na tomto riadku:

Dim _UserNameLabel As Label = PortalLogin.FindControl("UserNameLabel")

... ale keď to nechávam a nechám to zmeniť:

Dim _UserNameLabel As Control = PortalLogin.FindControl("UserNameLabel")

... Vlastnosť "Štýl" tu červená:

_UserNameLabel.Style("color") = dt1.Rows(0)("TextBoxColor")

Existuje alternatívny spôsob, ako dodať, že štítok / kontrola farby, som lepšie ignorovať Resharper návrh, alebo čo?

odpovede:

2 pre odpoveď č. 1

Správna možnosť je:

Dim _UserNameLabel = DirectCast(PortalLogin.FindControl("UserNameLabel"), Label)

Na Control Vráti odkaz FindControl je odliata ako typ Label a potom môžete pristupovať členov konkrétne s typom Label, to je Option Infer On typ, ktorý umožňuje UserNameLabel premenná nemožno vyvodiť z jeho Inicializácia výrazu. S Option Infer Off budete musieť napísať:

Dim _UserNameLabel As Label = DirectCast(PortalLogin.FindControl("UserNameLabel"), Label)

Niektorí ľudia radšej to vlastne, pre prehľadnosť. Type inference je často šikovný ale nevyžaduje.Kde je to potrebné je používať anonymné typy vrátené dotazy LINQ.