Преобразование list в list - C#
Формулировка задачи:
Здравствуйте, недавно начал изучать с#. Накопилось много вопросов)
но сейчас интересует один конкретный.
объём кода - пара сотен строк и дюжина классов...так что думаю, будет проблематично всю сюда свалить
(сам вопрос внизу. Описание самой программы можно даже не читать. Читать его нужно только, если то, о чём я спрашиваю - реализовать нельзя.)
Смысл такой: будет серия похожих программ, которые сравниваю 2 версии "чего-то там" (хранятся на SQL). Чтобы не писать каждый раз с нуля, я решил сделать 2 части проекта:
1 - базовая часть. Туда входят:
-классы, необходимые для распознавания изменений в разных версиях "чего-то там"(нас интересует только великий "БАЗОВЫЙ ТИП", по которому, собственно, и вопрос.)
-базовые классы, представляющие общие свойства, методы этого "чего-то там"
-интерфейсы и абстрактные классы (один из которых содержит интерфейс доступа к данным SQL базы - назовём его "ConnectorBase")
2 - сменная часть. Туда входят:
-производные от базовых классов и интерфейсов из пункта 1. Для нас важны: наследник "БАЗОВОГО ТИПА" - назовём его "ПРОИЗВОДНЫЙ ТИП"
и
наследник абстрактного класса, отвечающий за доступ к sql серверу (назовём его "Connector"), т.к. именно он и формирует и сам запрос, а также преобразует результат запроса в List<"ПРОИЗВОДНЫЙ ТИП">
Две части связываются вместе с помощью моего собственного простенького "IoC-Контейнера".
Как это работает:
класс "Connector" создаёт "List<Производный тип>", преобразует его в "List<Базовый тип>" и передаёт классу из части 1
класс из части 1 хранит полученный "List<Базовый тип>" и, с помощью своих методов формирует разные новые List<Базовый тип>, в которые входят некоторые элементы из старого списка.
В принципе всё - вот этот новый List<Базового типа> - это ответ, но в последующей части программы, мне нужно преобразовать "ответ" List<Базовый тип> в List<Производный тип>. В этом вся проблемма
Решил я пока её плохо - создавать ещё один НОВЫЙ List<Производный тип> и, с помощью foreach и преобразования копировать элементы из List<Базовый> в List<Производный>. Хочется сделать что-то такое
Есть ещё 1 вариант - везде использовать "производный тип". Но тогда часть 1 станет зависимой от части 2. И мне придётся писать больше кода - так себе затея.
List<VersionInfoBasic.VersionInfoBasic> list = a.GetDeleted(); var c = list as List<VersionInfoStrukturaKompleksa>;
Сам вопрос
- можно ли как-то преобразовать List<ПроизводныйТип> в List<БазовыйТип> (ну и наоборот), не прибегая к foreach для каждого элемента списка. (мне уже советовали LINQ выражения, о которых я пока ничего не знаю, но сказали, что принцип его работы такой же, как и у foreach). и далее, если нельзя...то насколько "правильной" можно считать программу (описанную выше) которая для своей работы создаёт ПроизводныйТип, потом преобразует его в БазовыйТип, работает с ним, а, для получения конечного ответа, преобразует его опять же в ПроизводныйТип Решение задачи: «Преобразование list в list»
textual
Листинг программы
public class shab<T> where T : VersionInfoBasic { public shab(T ob) { ob.Print(); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д