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