Создание 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; }
    }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.727 из 5
Похожие ответы