В C # у меня есть куча объектов, все унаследованные от одного базового класса.
У меня также есть несколько словарей, по одному для каждого подкласса.
Я хочу добавить все эти словари в один список , чтобы я мог просмотреть их все и выполнить некоторую работу (например, сравнение списков и т. Д.).
В итоге
Dictionary<string, Child> childObjects = new Dictionary<string, Child>();
List<Dictionary<string, Parent>> listOfDictionaries = new List<Dictionary<string, Parent>>();
listOfDictionaries.Add(childObjects);
Я бы подумал, что поскольку Child наследует от Parent, это должно сработать, но не скомпилируется. Очевидно, я не понимаю что-то о наследовании и обобщениях:)
Пример полного кода
class Program
{
static void Main(string[] args)
{
//Creating a Dictionary with a child object in it
Dictionary<string, Child> childObjects = new Dictionary<string, Child>();
var child = new Child();
childObjects.Add(child.id, child);
//Creating a "parent" Dictionary with a parent and a child object in it
Dictionary<string, Parent> parentObjects = new Dictionary<string, Parent>();
parentObjects.Add(child.id, child);
var parent = new Parent();
parentObjects.Add(parent.id, parent);
//Adding both dictionaries to a general list
List<Dictionary<string, Parent>> listOfDictionaries = new List<Dictionary<string, Parent>>();
listOfDictionaries.Add(childObjects); //This line won't compile
listOfDictionaries.Add(parentObjects);
}
}
class Parent
{
public string id { get; set; }
public Parent()
{
this.id = "1";
}
}
class Child : Parent
{
public Child()
{
this.id = "2";
}
}
Есть ли способ достичь этого?