Унаследовать значения списка

Все объекты в классе GroupRepository добавляю в определённый List<Group> subj. PlannerRepository пытается наследовать этот уже как-бы заполненный список. Но в Create возникает ошибка, что список пуст, как исправить?

var groups = new GroupRepository();
groups.Adding(new Group() { ID = 1, Name = "ир", Number = 91, });
groups.Adding(new Group() { ID = 2, Name = "ир", Number = 92, });
groups.Adding(new Group() { ID = 3, Name = "ик", Number = 93, });
groups.Adding(new Group() { ID = 4, Name = "ир", Number = 94, });

class PlannerRepository:GroupRepository
{
    static string[] days = { "Monday", "Tuesday", "Wednesday", "Thursday", "Friday" };
    int[] rooms = { 202, 32, 301, 21, 178, 123, 456, 213, 311, 254, 231, 789, 215, 216, 134, 123 };
    static int maxpair = 4;
    Random rnd = new Random();
    Random randomles = new Random();
    public List<object> schedule = new List<object>();
    public List<object> flow = new List<object>();

    public PlannerRepository()
    {
        subj = new List<Subject>();
    }

    public void CreateFlow(List<Group> groups, string name)
    {
        flow.Add(groups.FindAll(x => x.Name == name));
    }

    public void Create()
    {
        for (int i = 0; i < days.Length; i++)
        {
            schedule.Add(days[i]);
            for (int j = 1; j < maxpair; j++)
            {
                while (true)
                {
                    var lesson = subj[randomles.Next(1, subj.Count)];
                    for(int k = 0; i < rooms.Length; i++)
                    {
                        if ((!schedule.Contains(lesson)) && (!schedule.Contains(lesson.Type)) && (!schedule.Contains(rooms[k])))
                        {
                            schedule.Add(lesson);
                            schedule.Add(rooms[k]);
                        }
                    }
                    break;
                }
            }
        }
        Console.WriteLine(schedule);
    }
}

Ответы (1 шт):

Автор решения: Sleeeper

Создайте конструктор у базового класса GroupRepository, в котором делайте нужную вам инициализацию (нужные вам члены класса сделайте protected). У наследника PlannerRepository наследуйте конструктор базового класса. Тогда при создании экземпляра PlannerRepository, вам будут доступны protected свойства родителя.(при создании экземпляра наследника первым будем вызван конструктор родительского класса)

Но в целом, смотря на Ваш код, наследование не кажется в принципе нужным для решения задачи.

public class GroupRepository
{
   protected List<object> SomeObjects;

   public GroupRepository(List<object> values)
   {
      SomeObjects = values;
   }
 }

 public class PlannerRepository:GroupRepository
 {
    public PlannerRepository(List<object> values):base(values)
    {
    }
 }



public class SomeProcessor
   {
       void Start()
       {
          var list = new List<object>(test);
          var rep = new PlannerRepository(list);
          **rep.SomeObjects** 
       }
   }
→ Ссылка