/ / क्या यह जरूरी है कि मैं संभावित रनटाइम त्रुटि से बचने के लिए लेबल को नियंत्रण में बदलूं? - vb.net, रनटाइम-एरर, रेस्परर

क्या यह जरूरी है कि संभावित रनटाइम त्रुटि से बचने के लिए मैं लेबल को नियंत्रण में बदलूं? - vb.net, रनटाइम-त्रुटि, resharper

एक विरासत विरासत VB.NET / ASP परियोजना को शुद्ध करने की कोशिश में, मैं "इसे फिर से तैयार कर रहा हूं, और यह मुझे बताता है।""System.Web.UI.Control" को "System.Web.UI.eb.WontControls.Label" में परिवर्तित करने पर रनटाइम त्रुटियाँ हो सकती हैं"इस लाइन पर:

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

... लेकिन जब मैं प्राप्त करता हूं और इसे इसे इसे बदलने देता हूं:

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

... "स्टाइल" संपत्ति यहां लाल हो गई है:

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

क्या उस लेबल को नियंत्रित करने का एक वैकल्पिक तरीका है / एक रंग को नियंत्रित करना, क्या मैं Resharper के सुझाव को अनदेखा करने से बेहतर हूं, या क्या?

उत्तर:

जवाब के लिए 2 № 1

सही विकल्प है:

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

The Control द्वारा लौटाए गए संदर्भ FindControl प्रकार के रूप में डाली है Label और तुम तो प्रकार के लिए विशिष्ट सदस्यों का उपयोग कर सकते है Label। यह है Option Infer On कि अनुमति देता है के प्रकार UserNameLabel चर को उसके initialising व्यंजक से अनुमानित किया जाएगा । साथ Option Infer Off आप लिखने की आवश्यकता होगी:

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

कुछ लोगों को पसंद करते है कि वैसे भी, स्पष्टता के लिए । प्रकार अनुमान अक्सर काम है, लेकिन आवश्यक नहीं है ।जहां यह आवश्यक है LINQ क्वेरीज़ द्वारा लौटाए गए अनाम प्रकारों का उपयोग कर रहा है ।