Создание Dictionary при наследовании - C#
Формулировка задачи:
Проблема такова, есть абстрактный класс и собственно 2 наследника. Есть list типа базового класса. Как с помощью linq создать dictionary чтобы ключом было поле базового поля, а value- поле одного наследника+поле второго. Все поля типа string.
Решение задачи: «Создание Dictionary при наследовании»
textual
Листинг программы
- class Program
- {
- static void Main(string[] args)
- {
- var list = new List<Base>()
- {
- new A()
- {
- Field = "Field1",
- ValueA = "ValueA"
- },
- new B()
- {
- Field = "Field2",
- ValueB = "ValueB"
- },
- new A()
- {
- Field = "Field3",
- ValueA = "ValueA"
- },
- };
- var dictionary = list.ToDictionary(k => k.Field, k =>
- {
- var a = k as A;
- if (a != null)
- return a.ValueA;
- var b = k as B;
- if (b != null)
- return b.ValueB;
- throw new NotSupportedException($"Type {k.GetType()} is not supported");
- });
- foreach (var pair in dictionary)
- Console.WriteLine($"{pair.Key}: {pair.Value}");
- Console.ReadLine();
- }
- }
- public class Base
- {
- public string Field { get; set; }
- }
- public class A : Base
- {
- public string ValueA { get; set; }
- }
- public class B : Base
- {
- public string ValueB { get; set; }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д