2009-05-14 15 views
5

मैं Global_asax का उपयोग कर रहा हूं ताकि प्रत्येक अनुरोध के अंत में Application_EndRequest ईवेंट के माध्यम से लॉगिंग कर सकें। हालांकि, मैं HTTPContext.Current.Items संग्रह में संग्रहीत कुछ मानों का कुछ अजीब व्यवहार देख रहा हूं।निरर्थक एनम प्रकारों का अजीब व्यवहार

नीचे एक निरर्थक एनम के लिए डीबग आउटपुट है। आप देख सकते हैं कि एक मूल्य है, लेकिन HasValue गलत करने के लिए हल हो गया है ?!

{System.Nullable(Of AreaNameEnum)} 
    HasValue: False 
    hasValue: False 
    Value: {System.InvalidOperationException} 
    value: ADMIN {0} 

मैं अनुमान लगा रहा हूँ कि यह अनुरोध जीवन चक्र में बहुत देर हो चुकी HTTPContext.Current तक पहुँचने के लिए है - लेकिन यह कभी कभी काम करने के लिए और लगता है कभी कभी नहीं। क्या कोई भी क्या हो रहा है पर कोई और प्रकाश डाल सकता है?

धन्यवाद

उत्तर

4

Nullable एक संरचना है कि एक बूलियन hasValue और एक टी मूल्य जहां टी एक मान प्रकार होता है। इस मामले में एक enum। Enum को इस मामले में डिफ़ॉल्ट मान 0 होना चाहिए, हालांकि सार्वजनिक मान एक अपवाद फेंकता है क्योंकि Value गलत है।

जो आप देख रहे हैं वह आंतरिक है कि नलबल ऐसा करता है कि यह क्या करता है। जब आप वैल्यू झूठ बोलते हैं तो आप किसी भी मूल्य वाले आंतरिक मूल्य फ़ील्ड में कुछ भी नहीं पढ़ सकते हैं। आखिरकार यदि मूल्य शून्य हो सकता है तो यहां शून्य करने का उपयोग करने में कोई बात नहीं होगी।

+0

हां, अब समझ में आता है कि मैं इसके बारे में सोचता हूं। मुझे लगता है कि HTTPContext सामान एक लाल हेरिंग था। धन्यवाद। – James

संबंधित मुद्दे