c# - Specifying constructor constraint for Generic Parameter -
इस सवाल का पहले से ही एक उत्तर है: < / P>
- 5 जवाब
मेरे पास वस्तुओं का एक संग्रह है जो मैं एक अन्य प्रकार की वस्तुओं (एक के लिए) बनाने के लिए पैरामीटर के रूप में पास करता हूं। मैं यह कई जगहों पर कर रहा हूं (मूलतः डेटा ऑब्जेक्ट्स से बिजनेस ऑब्जेक्ट्स में परिवर्तित) मैं इसे पूरा करने के लिए एक सामान्य एक्सटेंशन विधि लिखना चाहता हूं लेकिन मैं फँस गया हूं क्योंकि मुझे नहीं पता कि मैं कैसे बाधा को निर्दिष्ट कर सकता हूं कि व्यापारिक ऑब्जेक्ट के पास कंस्ट्रक्टर डेटा ऑब्जेक्ट पैरामीटर के रूप में ले रहा है निम्नलिखित मेरे फ़ंक्शन का कोड है:
सार्वजनिक स्थिर IList & lt; T & gt; कन्वर्ट करें & lt; ए, टी & gt; (यह IEnumerable & lt; ए & gt; सूची) जहां टी: नया (ए) / * यह समस्या है PART * / {var ret = नई सूची & lt; T & gt; (); विदेशी मुद्रा (सूची में विभिन्न आइटम) {ret.Add (नया टी (आइटम)); } वापसी रिटर्न; }
दुर्भाग्य से, यह सी # में अनुमत नहीं है। आपके पास एक नया ()
प्रतिबंध हो सकता है जो कि एक डिफ़ॉल्ट कन्स्ट्रक्टर के लिए प्रकार को बलों करता है, लेकिन यह केवल कन्स्ट्रक्टर संबंधित बाधा है जो .NET द्वारा समर्थित है।
आपका सबसे अच्छा विकल्प शायद एक अंतरफलक को परिभाषित करने के लिए जो आप उपयोग कर सकते हैं, और इंटरफ़ेस के लिए विवश कर सकते हैं। निर्माण पर ऑब्जेक्ट को सेट करने की कोशिश करने के बजाय, आप "आरंभ" शैली पद्धति को प्राप्त कर सकते हैं जो "ए" ऑब्जेक्ट लेता है, और उसे कॉल करता है।
Comments
Post a Comment