У меня есть класс Alarms
, который содержит несколько Lists
разных моделей. Каждая модель отличается, и они состоят из нескольких свойств строк. Моя цель - создать файл CSV для каждой модели, но без кодирования каждого отдельного строкового свойства в моей модели.
public class Alarms
{
public List<SectorA> SectorA { get; set; } = new List<SectorA>();
public List<SectorB> SectorB { get; set; } = new List<SectorB>();
public List<SectorC> SectorC { get; set; } = new List<SectorC>();
}
Я нашел способ циклически перебирать свойства строки, например:
foreach (PropertyInfo prop in alarms.GetType().GetProperties())
{
var type = Nullable.GetUnderlyingType(prop.PropertyType) ?? prop.PropertyType;
if (type == typeof(string))
{
line += $"{prop.GetValue(lines, null)};";
}
}
Мой вопрос: как я могу циклически пройти через мой Alarm
класс, чтобы получить каждый List<SectorX>
внутри него за один l oop?
Изменить: Пример one SectorX
class
public class SectorA
{
public string Id { get; set; }
public string Group { get; set; }
public string Comment { get; set; }
...
}
Edit # 2 Вот функция, которую я должен l oop через класс, чтобы получить его свойства
public void WriteCsv<T>(string csvOutputPath, List<object> sectors)
{
using (var w = new StreamWriter(csvOutputPath))
{
foreach (var lines in sectors)
{
string line = "";
foreach (PropertyInfo prop in lines.GetType().GetProperties())
{
var type = Nullable.GetUnderlyingType(prop.PropertyType) ?? prop.PropertyType;
if (type == typeof(string))
{
line += $"{prop.GetValue(lines, null)};";
}
}
line = line.Remove(line.Length - 1);
w.WriteLine(line);
w.Flush();
}
}
}