У меня есть сценарий, в котором класс загружает объекты одного типа, из-за абстракций я не могу использовать универсальный класс (генерики имеют тенденцию распространяться как рак :), но я часто хочу работать с универсальной версией объектов после извлечения, что привело к следующему коду (упрощенно):
List<SomeClass> items = Storage.LoadItems(filename).OfType<SomeClass>().ToList();
Где LoadItems возвращает список , тогда я понял, почему бы вместо этого не иметь
public void LoadItems(string filename,IList list);
Теперь я могу сделатьэто вместо этого
List<SomeClass> items = new List<SomeClass>();
LoadItems(filename,items);
Что должно быть более эффективным.Это также кажется немного более гибким, так как я могу взять существующий список и добавить новые элементы.Итак, мои вопросы: это общий шаблон или у вас есть другой / лучший способ добиться этого?
Мне также немного любопытно, что вы можете сделать это, если вы попытаетесь добавить объектнеправильный тип вы получаете исключение, но означает ли это, что универсальные списки также делают проверку типа?(что кажется немного ненужным)
РЕДАКТИРОВАТЬ На самом деле может быть немного элегантнее изменить шаблон на
public IList LoadItems(string filename,IList list=null);
, чтобы вы могли свободно использовать оператори если список не передан, вы можете просто создать экземпляр List