/ / IQueryable के लिए जेनेरिक एक्सटेंशन विधि <t> - c #, एंटिटी-फ्रेमवर्क, ef-code-first, teler-mvc

IQueryable <आउट टी> - सी #, इकाई-ढांचे, ef-code-first, telerik-mvc के लिए जेनेरिक एक्सटेंशन विधि

ईमानदारी से मुझे विस्तार के तरीकों से नफरत है disscussed पहले।

मेरे पास "ApplySorting" के रूप में एक एक्सटेंशन विधि है

public static IQueryable<Brand> ApplySorting(this IQueryable<Brand> data,
IList<GroupDescriptor> groupDescriptors,
IList<SortDescriptor> sortDescriptors)

के लिए इसे लागू कर दिया गया है IQueryable<Brand> यह अच्छा लग रहा है। मुझे श्रेणी के लिए एक और विधि की आवश्यकता है, मुझे दूसरी विधि को लागू करना चाहिए IQueryable<Category> और यह कहानी चलती है।

सवाल; मैं कैसे परिभाषित कर सकता हूं IQueryable<T> विस्तार विधि को रोकने के लिए? यह इस तरह दिखना चाहिए (निश्चित रूप से यह मान्य नहीं है वीएस 2010 मुझे रोक दिया गया।

public static IQueryable<T> ApplySorting(this IQueryable<T> data,
IList<GroupDescriptor> groupDescriptors,
IList<SortDescriptor> sortDescriptors)
where T : IEntity

अग्रिम में धन्यवाद! :)

उत्तर:

जवाब के लिए 3 № 1

इसे इस्तेमाल करे:

public static IQueryable<T> ApplySorting<T>(this IQueryable<T> data,
IList<GroupDescriptor> groupDescriptors,
IList<SortDescriptor> sortDescriptors)
where T : IEntity

(मैंने विधि में एक प्रकार का चर जोड़ा)


जवाब के लिए 3 № 2

आपको विधि बनाने की आवश्यकता है सामान्य सामान्य मानकों के क्रम में।

दूसरे शब्दों में, यह काम करेगा:

public static IQueryable<T> ApplySorting<T>(this IQueryable<T> data,
IList<GroupDescriptor> groupDescriptors,
IList<SortDescriptor> sortDescriptors)
where T : IEntity

(ध्यान दें कि <T> विधि "नाम" में मौजूद है

सभी LINQ एक्सटेंशन विधियों को इस तरह से परिभाषित किया गया है, लेकिन ज्यादातर प्रकारों में ठोस प्रकार पास करना वैकल्पिक है, क्योंकि प्रकार के अनुमान के कारण, यह "" क्यों इसे याद करना आसान है