Я хотел бы создать метод в базовом универсальном классе для возврата специализированной коллекции производных объектов и выполнить некоторые операции над ними, как в следующем примере:
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 {
}
Можно ли каким-то образом указать такое ограничение?