तो मेरे पास एक कक्षा है जो XML फ़ाइल को पढ़ने और पकड़ने का ख्याल रखती है। अभी इसके बारे में एक सरल संस्करण इस तरह दिखता है:शेक यदि XElement वैश्विक स्तर पर शून्य है
public class EstEIDPersoConfig
{
public bool LaunchDebugger { get ; set; }
public string Password { get; set; }
public int Slot { get; set; }
public string Reader { get; set; }
public string TestInput { get; set; }
public bool Logging { get; set; }
public EstEIDPersoConfig()
{
XElement xml = XElement.Load(myxml.xml);
XElement Configuration = xml.Element("Configuration");
LaunchDebugger = Convert.ToBoolean(Configuration.Element("LaunchDebugger").Value);
Password = Configuration.Element("Password").Value;
Slot = Convert.ToInt32(Configuration.Element("Slot").Value);
Reader = Configuration.Element("Reader").Value;
TestInput = Configuration.Element("TestInput").Value;
Logging = Convert.ToBoolean(Configuration.Element("Logging").Value);
}
}
और यहां कुछ और बाद में किया जाएगा। तो समस्या यह है कि अगर कुछ तत्व xml में मौजूद नहीं है तो मुझे System.NullReferenceException
मिलता है। इसलिए मुझे यह जांचने की आवश्यकता है कि तत्व null
है या नहीं। ऐसा करने का एक तरीका है:
var value = Configuration.Element("LaunchDebugger").Value;
if (value != null)
LaunchDebugger = Convert.ToBoolean(value);
else
throw new Exception("LaunchDebugger element missing from xml!");
लेकिन प्रत्येक तत्व के लिए ऐसा करना बहुत अधिक होगा। तो मुझे इस प्रणाली को सरल बनाने के लिए कुछ अच्छे विचारों की आवश्यकता है ताकि यह कोड की 1000 पंक्तियों में समाप्त न हो।
संपादित करें: पिछले कोड स्निपेट संपादित, विचार एक डिफ़ॉल्ट मान सेट करने के लिए नहीं था, विचार उपयोगकर्ता है कि इस तत्व क्या अशक्त एक्सएमएल से लापता है सूचित करने के लिए किया गया था।
एक्सएमएल का मूल्य शून्य होने पर उचित कन्स्ट्रक्टर को एक्सएमएल के आलसी प्रारंभिक नामक कहा जाता है। – mozillanerd
@ hs2d - मुझे लगता है कि abatishchev का जवाब वह है जिसे आप ढूंढ रहे हैं। – Tim