У меня есть 5 классов, которые представляют собой ряд сетки данных.Все эти классы наследуются от абстрактного класса CoreGrid.
У меня есть механизм экспорта, который использует отражение, чтобы выяснить столбцы для экспорта.В настоящее время у меня есть метод для каждого типа сетки (ExportOrganisations, ExportPeople, ExportEvents), однако это ужасно, поскольку единственное, что отличается между ними, это часть, где он ищет тип.Пример кода показан ниже:
public string ExportEvents(List<EventGrid> events)
{
DataTable report = new DataTable();
EventGrid ev = new EventGrid();
Type t = ev.GetType();
PropertyInfo[] props = t.GetProperties();
foreach (PropertyInfo prop in props)
{
if (!prop.Name.Contains("ID"))
{
report.Columns.Add(prop.Name);
}
}
foreach (var item in events)
{
DataRow dr = report.NewRow();
Type itemType = item.GetType();
PropertyInfo[] itemProps = itemType.GetProperties();
foreach (PropertyInfo prop in itemProps)
{
if (report.Columns.Contains(prop.Name))
{
if (prop.GetValue(item, null) != null)
{
dr[prop.Name] = prop.GetValue(item, null).ToString().Replace(",", string.Empty);
}
}
}
report.Rows.Add(dr);
}
return GenerateCSVExport(report, ExportType.Events);
}
Мой вопрос: как бы я сжал эти методы в один метод, где метод принимает список, который наследуется от CoreGrid?