मैं एक आधार सामान्य वर्ग में एक विधि बनाने के लिए निम्न उदाहरण में ली गई वस्तुओं की एक विशेष संग्रह लौट सकते हैं और उन पर कुछ कार्रवाई करने, की तरह चाहते हैं:मजे की बात है आवर्ती टेम्पलेट पैटर्न और जेनरिक की कमी (सी #)
using System;
using System.Collections.Generic;
namespace test {
class Base<T> {
public static List<T> DoSomething() {
List<T> objects = new List<T>();
// fill the list somehow...
foreach (T t in objects) {
if (t.DoSomeTest()) { // error !!!
// ...
}
}
return objects;
}
public virtual bool DoSomeTest() {
return true;
}
}
class Derived : Base<Derived> {
public override bool DoSomeTest() {
// return a random bool value
return (0 == new Random().Next() % 2);
}
}
class Program {
static void Main(string[] args) {
List<Derived> list = Derived.DoSomething();
}
}
}
मेरे समस्या यह है कि इस तरह के एक बात मैं
तरह की कोई समस्याclass Base<T> where T : Base {
}
यह है कि किसी तरह की तरह की कोई समस्या निर्दिष्ट करने के लिए संभव है निर्दिष्ट करने के लिए की आवश्यकता होगी करने के लिए है?
इस तरह के कोड के लिए बेहतर भाषा समर्थन जोड़ने के लिए बस इस उपयोगकर्ताव्यापी सुझाव को बनाया गया है, इस पर वोट देने के लिए स्वतंत्र महसूस करें! https://visualstudio.uservoice.com/forums/121579-visual-studio-ide/suggestions/32188474-support-this-as-a-return-type-to-make-building-f –