Reflection
можно использовать для решения этой проблемы. Следующий метод использует Reflection
для перебора выходных и праздничных дней и установки соответствующих Cx
свойств в значение true:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
public static void FillHolidayRecords(HolidayRecords hr, List<int> holidays, List<int> weekends)
{
Type type = hr.GetType();
foreach (int day in holidays.Concat(weekends).Distinct())
{
// Get Cx property by day number.
PropertyInfo pi = type.GetProperty($"C{day}");
// Set value of the property to true.
pi.SetValue(hr, true);
}
}
В этом методе предполагается, что по умолчанию свойства Cx
равны false.
Мне нужно будет l oop через все столбцы и установить их в False, прежде чем я обработаю каждый список
Если вы объявите каждый из Cx
свойства как autoproperty без установки его значений явно, чем значения этих Cx
свойств будут false
. И вам не нужно будет устанавливать их на false
в l oop.
public class HolidayRecords
{
// By default if you don't set value of C1 in the constructor
// its value is false.
public bool C1 { get; set; }
...
}
public void Sample()
{
HolidayRecords hr = new HolidayRecords();
// Here the value of hr.C1 is false.
}