Невозможно привести List к классу, производному от ListC#

Место общения программистов C#
Ответить
Anonymous
 Невозможно привести List к классу, производному от List

Сообщение Anonymous »

Я получил класс «ListOfT» из List, чтобы иметь место для размещения функции, работающей со списком T.
У меня есть функция который перебирает список и должен возвращать подсписок T с помощью Linq:

Код: Выделить всё

public class ListOfT : List
{
//no explicit constructor
//other functions to work on this list of T's ...

public ListOfT GenerateSubList()
{
return this.Where(t => t.SomeCriteria).ToList(); //  t.SomeCriteria).ToList(); //  t.SomeCriteria));
}
}
Возможно, мне следовало использовать SomeClass вместо T в моем вопросе, чтобы уточнить, что класс ListOfT является конкретным экземпляром List используя SomeClass как T, а не класс шаблона сам по себе.
@Tim Schmelter: Часть t.SomeCriteria должна была указать, что каждый экземпляр T, содержащийся в списке, имеет свойство, которое я хочу проверить, чтобы включить его в подсписок. Спасибо за ссылку на «Почему бы не наследовать от List», я читал ее, ожидая ответов. См. мои комментарии ниже относительно «имеет» и «есть».
Кроме того, (@Rookie), да, новый список, возвращаемый функцией GenerateSubList(), не будет содержать копий. исходных элементов, но ссылки на исходные T, хранящиеся в экземпляре ListOfT, я вызываю GenerateSubList(). Так и было задумано.
@Орен Тамам и @Fildor: Я не пошел по пути "имеет" вместо "есть" >, поскольку для этого мне потребовалось бы реализовать интерфейс IList. Как упоминалось выше @Tim, ведется продолжительная дискуссия о том, почему бы не использовать классы, производные от List. Лично я считаю, что это хороший способ собрать в одном месте функции, работающие со списками определенного типа. По моему мнению, разница между имеет и есть сводится к личному выбору и сценарию, в котором вы его используете.
@Ralf упомянул методы расширения как еще один способ «улучшить» конкретный тип списка. Я использовал их в некоторых местах, где у меня была иерархия классов, где каждый потомок должен был быть «перечислен». В этом случае статический класс, содержащий расширения, был хорошим способом собрать все функции моего зоопарка классов, связанные со списками, в одном месте.

Подробнее здесь: https://stackoverflow.com/questions/784 ... from-listt
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»