Я делаю некоторые абстрактные базовые классы. Базовый объект определяется как:
public abstract class Bar
{
public bool Enabled;
}
Базовая коллекция определяется как:
public abstract class Foo<T> : List<T>
where T : Bar
{
public Foo<T> GetAllEnabled()
{
Foo<T> ret = new Foo<T>();
foreach (T item in this)
{
if (item.Enabled)
{
ret.Add(item);
}
}
return ret;
}
}
Естественно, я получаю ошибку, пытаясь создать new Foo<T>()
, потому что Foo - абстрактный класс. Без абстрактного модификатора все работает нормально, но я хочу, чтобы модификатор был там, потому что я хочу убедиться, что класс получен.
Я пытался
<code> Type U = this.GetType();
Foo ret = new U();
но я получаю сообщение об ошибке «Не удалось найти тип или имя пространства имен« U »(бла-бла-бла)».
Я думаю, что моя попытка исправить должна сработать, и у меня просто неверный синтаксис. Что мне здесь не хватает?