तो, मैं अपने आराम क्षेत्र से बाहर एक सा कर रहा हूँ जब समारोह <>, जेनेरिक्स और लैम्ब्डा भाव के साथ काम कर लेकिन मुझे लगता है मैं सामान्य विचार (तरह), लेकिन अभी भी एक सा भ्रमित हो।सी # समारोह <> और जेनरिक
मैं SortableObservableCollection वर्ग को क्रियान्वित किया है (ऑनलाइन कहीं से लिया - जो कोई भी यह मैं इसे से मिल गया था करने के लिए धन्यवाद!) और इसे इस तरह प्रयोग किया जाता है:
_lookuplistViewModel.Sort(x => x.BrandName, ListSortDirection.Ascending);
जहां x ऑब्जेक्ट प्रकार द्वारा कार्यान्वित किया जाता है क्रमबद्ध संग्रह। इस उदाहरण में, ब्रांडनाम लागू ऑब्जेक्ट के प्रकार की एक संपत्ति है, लेकिन मैं उपरोक्त कोड को सामान्य वर्ग में उपयोग करना चाहता हूं और उस संपत्ति में पास करना चाहता हूं जिस पर सॉर्ट करना है। क्रमबद्ध विधि इस प्रकार है:
public void Sort<TKey>(Func<T, TKey> keySelector, ListSortDirection direction)
{
switch (direction)
{
case ListSortDirection.Ascending:
{
ApplySort(Items.OrderBy(keySelector));
break;
}
case System.ComponentModel.ListSortDirection.Descending:
{
ApplySort(Items.OrderByDescending(keySelector));
break;
}
}
}
सामान्य वर्ग जिस पर क्रमबद्ध विधि कहा जाता है इस तरह परिभाषित किया गया है:
public class ExtendedLookupManagerViewModel<VMod, Mod> : LookupManagerViewModel
where VMod : ExtendedLookupViewModel
where Mod : ExtendedLookupModelBase
और मैं इस तरह यह का एक उदाहरण बनाने के लिए करना चाहते हैं:
_medProd = new ExtendedLookupManagerViewModel<MedicinalProductViewModel, MedicinalProduct>(string property);
जहां property
वह संपत्ति है जिस पर सॉर्ट करना है। आदर्श रूप से यह सुरक्षित होना चाहिए, लेकिन एक स्ट्रिंग पर्याप्त होगा।
क्या कोई मुझे सही दिशा में चलाने में मदद कर सकता है?
मैं lambdas और जेनरिक के साथ सुंदर ठीक हूँ, लेकिन मैं समझ नहीं क्या आप पूछ रहे हैं, आपके द्वारा पोस्ट किए गए कोड की पहली पंक्ति वह है जो आप अपनी आवश्यकताओं के विवरण से पूछ रहे हैं, लेकिन आपके कन्स्ट्रक्टर सिग के बारे में आप जो भी बात कर रहे हैं उसके साथ कुछ लेना देना प्रतीत नहीं होता है। मैं बहुत असमंजस में हूँ। आप अपना संग्रह किस प्रकार क्रमबद्ध करने की कोशिश कर रहे हैं? –
आप बिल्कुल सही हैं, पहली पंक्ति काम करती है, लेकिन केवल अगर मैं जेनेरिक का उपयोग करने के बजाय विस्तारित लुकअप मैनेजर व्यूमोडेल से व्युत्पन्न एक विशिष्ट प्रकार का उपयोग करता हूं। BrandName MedicinalProductViewModel पर एक प्रॉपर्टी है, लेकिन यदि मैं किसी अन्य प्रकार का उपयोग करता हूं तो मुझे किसी अन्य प्रॉपर्टी का उपयोग करने में सक्षम होना चाहिए। मुझे लगता है कि सवाल यह है कि मैं x.brandName के बजाय पास पैरामीटर का उपयोग कैसे कर सकता हूं।उम्मीद है कि यह थोड़ा स्पष्ट बनाता है? – pilsdumps