मैं एक ऐसी प्रणाली बना रहा हूं जो एक छोटी स्क्रिप्ट को एक डीएल में बदल देता है। मुझे एक समस्या का सामना करना पड़ रहा है जब मैं एक शून्य मूल्य वर्ग लेने की कोशिश करता हूं और इसे पैरामीटर का डिफ़ॉल्ट मान बना देता हूं। समस्या यह है कि मुझे कंपाइलर के भीतर चयनित उपयोगकर्ता का एक उदाहरण बनाने की आवश्यकता है और इसे स्थिर के रूप में सेट करें।एक्टिवेटर के माध्यम से एक नलिका ऑब्जेक्ट बनाना। क्रिएट इंस्टेंस रिटर्न शून्य
दुर्भाग्य से, जब भी मैं का उपयोग Activator.CreateInstance(NullableType)
मैं null
वापसी मान के रूप में मिलता है (जहां NullableType उपयोगकर्ता इनपुट से एक बनाया प्रकार है)। उदाहरण के लिए, बस निष्पादित:
object Test = Activator.CreateInstance(typeof(Nullable<int>));
Console.WriteLine(Test == null);
सत्य लौटाता है। यह केवल न्यूलबल्स के साथ होता है। सी # में निर्मित एक संरचना, यहां तक कि एक सामान्य, ठीक बनाया गया है। बिल्ली, अगर मैं & कॉपी करता हूं तो DotNetReflector (और TypeDependencyAttribute, TargetPatchingOptOutAttribute, और ThrowHelper कॉल को हटाएं क्योंकि मुझे उन तक पहुंच नहीं है), यह ऊपर झूठा दिखाता है।
क्या चल रहा है? क्या मुझे रन-टाइम तक जेनेरिक पैरामीटर नहीं पता जब कोई नामुमकिन बनाने का कोई अन्य संभावित तरीका है?
मॉड्यूल और ऑप्टपैम का क्या संदर्भ है? –
1. बहुत पागल हैक। 2. नलिकाएं ऑब्जेक्ट फॉर्म में शून्य हैं - यह डिज़ाइन द्वारा है। 3. कृपया अधिक जानकारी कृपया। – Vlad
हां, यह एक पागल हैक है। यह 'पैरामीटरबिल्डर। सैटकॉन्स्टेंट 'के आसपास काम करना था, यदि' if (value == null) नया ArgumentException (...) 'फेंक रहा है। वास्तविक देशी कोड जो 'पैरामीटरबिल्डर .etConstant' उपयोग करता है (जो निजी है और जो मैं ऊपर के लिए प्रतिबिंबित कर रहा हूं) ठीक है, नलबल्स शून्य के साथ ठीक है, क्योंकि यह डिज़ाइन द्वारा है। यह केवल प्रबंधित, सार्वजनिक सामना करने वाला फ़ंक्शन था जिसमें एक बग था, और बाईपासिंग की आवश्यकता थी। बग को तब से तय कर दिया गया है, इसलिए जब तक आप 3.5 या उससे कम लक्ष्यीकरण नहीं कर रहे हैं, तो यह उत्तर अब आवश्यक नहीं है। –