generics - Pass List into method requiring List in C# -


क्या यह संभव है?

  var cats = catsource.Select (c = & gt; नया {CatId = c.catId, नाम = c.Name,})। ToList ();   

var myCatObject = नया CatData (बिल्लियों);

यह काम नहीं करता क्योंकि कंपाइलर कहता है कि वह बिल्लियों में सूची & lt; T & gt;

बिल्लियों एक अनाम प्रकार है, और CatData है:

  सार्वजनिक वर्ग CatData & lt; T & gt; {सार्वजनिक पूर्णांक; सार्वजनिक अंतर रिकॉर्ड; सार्वजनिक सूची & lt; T & gt; रिकॉर्ड; सार्वजनिक कैटडेटा (सूची & lt; T & gt; डेटा ऑब्जेक्ट्स, इंट कुल रिक्तियां, इंट नंबरओफ़रॉज़) {कुल = (इंट) मैथ। कैलिंग ((कुल) कुल रिकॉर्ड / संख्याओफ़रियो); रिकॉर्ड = कुल रक्षक; पंक्तियाँ = डेटाऑब्जेक्ट; }}   

कोई भी विचार?


संपादित करें:

इसलिए मैंने यह कोड किया है, लेकिन फिर भी एक समस्या है: < / P>

  सार्वजनिक वर्ग CatData {सार्वजनिक पूर्णांक; सार्वजनिक अंतर रिकॉर्ड; सार्वजनिक सूची & lt; T & gt; पंक्तियों; निजी कैटडेटा (लिस्ट & lt; T & gt; डेटा ऑब्जेक्ट्स, इंट कुल रिक्तियां, इंट नंबरओफ्रो) {कुल = (इंट) मैथ। कैलिंग ((कुल) कुल रिकॉर्ड / संख्याओफ़ोरो); रिकॉर्ड = कुल रक्षक; पंक्तियाँ = डेटाऑब्जेक्ट; } सार्वजनिक स्थिर CatData & lt; T & gt; बनाएँ (सूची & amp; टीटी; टी & gt; डेटा ऑब्जेक्ट्स, इंट कुल रिक्तियां, इंट नंबरओफ़रॉज़) {नया कैटडाटा & lt; T & gt; (डेटा ऑब्जेक्ट्स, कुल रिक्तियां, संख्याओफ़ोरो);    

इस कोड के & lt; T & gt; कहने के हर उदाहरण पर एक त्रुटि है

प्रतीक टीका हल नहीं किया जा सकता

प्रकार पैरामीटर की गलत संख्या।

एचआर>

अपडेट को समझाने के लिए कि मुझे क्या चाहिए:

मैं उन वस्तुओं की एक सूची बनाना चाहता हूं जो एक अनाम प्रकार है

var someList = someCollection.Select (new {...});

मैं एक ऑब्जेक्ट बनाना चाहता हूं जो उन्हें list & lt; anonymous & gt;

Var myObject = new myObject (someList, 5);

तो मैं कर सकता हूँ:

myObject.someValue; // 5 (इसे कन्स्ट्रक्टर में संग्रहीत किया गया है) myObject.myList.Count (); // इसमें गिनती की जा सकती है कि कितने गुमनाम वस्तुओं में है

शायद मुझे इसे सूची & lt; ऑब्जेक्ट & gt; के रूप में स्टोर करना चाहिए।


< P> मुझे वास्तव में नहीं मिलता है, शायद मैं थोड़ा बहुत मोटी हूँ।

सार्वजनिक कैटडेटा (सूची & lt; ऑब्जेक्ट & gt; डेटा ऑब्जेक्ट्स, इंटेलल कुल रिक्तियां, इंट संख्याओफ़ोर्ज़) मेरे कन्स्ट्रक्टर के रूप में

< कोड> var कैटडेटा = नया कैटडेटा (रिकॉर्ड.कस्ट एंड एलटी; ऑब्जेक्ट & gt; ()। ToList (), कुल रिक्तियां, पंक्तियाँ);

आपको फ़ैक्टरी पद्धति को परिभाषित करने की आवश्यकता है।

जेनरिक्स अनुमान लगाए गए हैं (यदि संभव हो तो) तरीके बुला रहे हैं, लेकिन जब कन्स्ट्रक्टर कॉल नहीं करते हैं।

यह: <पूर्व> सार्वजनिक स्थैतिक वर्ग CatData {सार्वजनिक स्थिर CatData & lt; T & gt; & Lt; T & gt; (सूची & lt; T & gt; बिल्लियों) बनाएं {नए CatData पर जाएं & lt; T & gt; (बिल्लियों); }}

इस तरह से प्रयोग किया जाता है:

  var डेटा = CatData.Create (बिल्लियों);   

एरिक लिपर ने कुछ विचारों के बारे में भी बात की है कि इसे अनुमति क्यों नहीं दी गई है।

नए की शुरूआत के साथ, नई सुविधाओं में बेहतर हो सकता है प्रकट होने की संभावना के रूप में इसका मतलब यह होगा कि 1 परिवर्तन कई भाषाओं पर लागू हो सकता है और संभवतः कार्यान्वित करना आसान होगा, जो संभवतः इस चर्चा में नए जीवन को किस तरह फैल गया, जैसा कि


भ्रम, चाहे यह चाल वास्तव में काम करता है या नहीं, यहां एक पूर्ण कार्यक्रम है जो दर्शाता है:

  void main () {var test = new [] {new} {name = "test", id = 42 }, नया {name = "test 2", id = 17}} .toList (); CatData.Create (परीक्षण); } सार्वजनिक वर्ग CatData & lt; T & gt; {सार्वजनिक कैटडेटा (सूची & lt; T & gt; सूची) {}} सार्वजनिक स्थिर वर्ग CatData {सार्वजनिक स्थिर CatData & lt; T & gt; & Lt; T & gt; (सूची & lt; T & gt; सूची बनाएँ) {नई CatData वापस & lt; T & gt; (सूची); }}   

यह केवल ठीक काम करता है, यह दर्शाता है कि समान नाम स्थान और विधानसभा में, समान वर्ग के नाम के साथ स्थिर गैर-सामान्य वर्ग और सामान्य वर्ग दोनों के लिए यह पूरी तरह से कानूनी है।

इसके साथ ही एनएटी ढांचे में इसके बहुत सारे सबूत होने चाहिए, क्योंकि ट्यूपल एकाधिक संस्करणों के साथ मौजूद है।

Comments

Popular posts from this blog

c# - LINQ to Entities does not recognize the method 'Int32 IndexOf(System.String, System.StringComparison)' method -

Pygame memory leak with transform.flip -

python - Writing Greek in matplotlib labels, titles -