Если у меня есть метод со следующей подписью:
public IEnumerable<ScheduleDetailsView> StructureSchedule()
{
bool isStartWeek = false;
int index = -1;
var week = Enum.GetValues(typeof(Week)).Cast<Week>();
var weekLength = Enum.GetNames(typeof(Week)).Length;
List<ScheduleDetailsView> scheduleDetailsViews = new List<ScheduleDetailsView>();
for (int i = 0; i < weekLength; i++)
{
if (isStartWeek)
{
if (WorkingGroup.WeekStart == week.ElementAt(i))
{
index = i;
i = 0;
isStartWeek = false;
}
}
else
{
ScheduleDetailsView scheduleDetailsView = new ScheduleDetailsView(i, week.ElementAt((i + index) % weekLength), false, false,0);
scheduleDetailsViews.Add(scheduleDetailsView);
}
}
return scheduleDetailsViews;
}
public class ScheduleDetailView
{
public ScheduleDetailView(int id, Week workingDay, bool isWeekend, bool isShortDay, int order, int shiftId)
{
Id = id;
WorkingDay = workingDay;
IsWeekend = isWeekend;
IsShortDay = isShortDay;
this.order = order;
ShiftId = shiftId;
}
public int Id { get; set; }
public Week WorkingDay { get; set; }
public bool IsWeekend { get; set; }
public bool IsShortDay { get; set; }
public int order { get; set; }
public int ShiftId { get; set; }
public Shift Shift { get; set; }
}
Теперь пользователь этого метода должен заполнить только некоторые свойства в этой структуре (IsWeekend ,IsShortDay ,ShiftId )
без добавления нового ScheduleDetailView или изменения порядка этих элементов или переопределения всего
IEnumerable
и верните его вызывающему.
EX:
id WorkingDay IsWeekend IsShortDay order ShiftId
1 6 false false 1 -1
2 7 false false 2 -1
3 1 false false 3 -1
4 2 false false 4 -1
5 3 false false 5 -1
6 4 false false 6 -1
7 5 false false 7 -1
Это принято:
1 6 true false 1 -1
2 7 false false 2 -1
3 1 false false 3 -1
4 2 false false 4 -1
5 3 false false 5 -1
6 4 false false 6 -1
7 5 true true 7 -1
Это недопустимо: , поскольку оно изменяется WorkingDay
1 5 true false 1 -1
2 7 false false 2 -1
3 1 false false 3 -1
4 2 false false 4 -1
5 3 false false 5 -1
6 4 false false 6 -1
7 6 true true 7 -1
Это недопустимо: , поскольку оно удаляет из возвращенного IEnum
1 6 true false 1 -1
2 7 false false 2 -1
3 1 false false 3 -1
4 2 false false 4 -1
5 3 false false 5 -1
6 4 false false 6 -1
Как гарантировать, что пользователь этого метода просто обновит (IsWeekend ,IsShortDay ,ShiftId )
в предыдущей структуре и вернет IEnumerable в его обновленной версии.