सी #, .NET 3.5सी # सार जेनेरिक विधि
मैं एक बेस क्लास बनाने की कोशिश कर रहा हूं जिसमें एक सामान्य विधि है। जिन वर्गों से प्राप्त होता है उन्हें विधि के प्रकार निर्दिष्ट करना चाहिए।
इसके लिए आधार फ़िल्टरिंग प्रबंधित करने वाले वर्ग बनाने के लिए है।
तो मेरे पास है:
public abstract class FilterBase {
//NEED Help Declaring the Generic method for GetFilter
//public abstract IQueryable<T> GetFilter<T>(IQueryable<T> query);
}
public class ProjectFilter:FilterBase {
public IQueryable<Linq.Project> GetFilter(IQueryable<Linq.Project> query) {
//do stuff with query
return query;
}
}
public class ProjectList {
public static ProjectList GetList(ProjectFilter filter) {
var query = //....Linq code...
query = filterCriteria.GetFilter(query);
}
}
सोचो यह कुछ आसान है, लेकिन मैं GetFilter सार विधि के लिए FilterBase में सही वाक्य रचना नहीं कर सकते।
संपादित
आदर्श रूप में, केवल विधि सामान्य रूप में है और वर्ग रखना चाहते हैं। यदि संभव नहीं है, तो कृपया मुझे बताएं ..
जो काम करता है, क्या मुझे क्लास जेनेरिक बनाना है? क्या मैं सिर्फ विधि सामान्य नहीं रख सकता? कारण मैं पूछता हूं कि एक ही कक्षा के लिए कई गेटफिल्टर हो सकते हैं जो 'LINQ.Project' –
@B Z से भिन्न IQueryable लेते हैं: आप केवल सामान्य विधि बना सकते हैं, लेकिन फिर इसे लागू होने तक सामान्य रहना होगा। आप गैर-जेनेरिक वर्ग से प्राप्त नहीं कर सकते हैं और जब आप अपने प्रश्न में प्रयास करते हैं तो सामान्य प्रकार को विधि पर असाइन करें। कॉलर को उस मामले में विधि को प्रकार की आपूर्ति करनी होगी। –
@ मार्क - thx। मुझे एक सीमा की तरह लगता है? क्या आपको पता है कि वहां और स्पष्टीकरण है? हो सकता है कि जॉन स्कीट की सी # गहराई में? –