Унаследовать значения списка
Все объекты в классе 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 шт):
Создайте конструктор у базового класса 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**
}
}