Saturday 15 January 2011

c# - using the where clause + new constraint with args? -


मेरे पास ऐसा कोड है जो इस तरह दिखता है:

  सार्वजनिक स्थैतिक T CreateSomething & lt; T & gt; (SomeType a) जहां T: कुछ MicrosoftBaseClass, नया () {var newElement = new T {SomeProperty = a}; कार्य करना(); नए एलेमेंट लौटें; }  

और अब मुझे कोड को बदलने की आवश्यकता है, इसलिए मैं कुछ माइक्रोसॉफ्टबेस क्लास के बूलियन तर्क के निर्माता को पास कर सकता हूं - जो मैं केवल निर्माण पर सेट कर सकता हूं।

< P> चूंकि "नया ()" बाधा को सार्वजनिक पैरामीटर-कम कन्स्ट्रक्टर की आवश्यकता होती है, और जब से मैं किसी इंटरफ़ेस का उपयोग नहीं कर सकता या कुछ माइक्रोसॉफ्टोबस क्लास को संशोधित कर सकता हूं, तो मैं इस तरह प्रतिबिंब का उपयोग कर रहा हूं:

  var newElement = (T) (टाइपफ (टी) .GetConstructor (नया प्रकार [] {टाइपफ (कुछ प्रकार)})। आह्वान करें (नया ऑब्जेक्ट [] {a}));  

क्या यह करने के लिए कोई और अधिक सुरुचिपूर्ण तरीका सुझा सकता है?

शायद आप इसका उपयोग कर सकते हैं:

<पूर्व> var newElement = (टी) उत्प्रेरक। बनाएँइंसेंस (टाइपफ (टी), ए);

No comments:

Post a Comment