Учитывая это:
class InvoiceHeader {
public int InvoiceHeaderId { get; set; }
IList<InvoiceDetail> LineItems { get; set; }
}
В настоящее время я использую этот код для определения того, обладает ли класс свойством коллекции:
void DetectCollection(object modelSource)
{
Type modelSourceType = modelSource.GetType();
foreach (PropertyInfo p in modelSourceType.GetProperties())
{
if (p.PropertyType.IsGenericType && p.PropertyType.GetGenericTypeDefinition() == typeof(IList<>))
{
System.Windows.Forms.MessageBox.Show(p.Name);
}
}
}
Есть ли общий способ определения, является ли LineItems перечислимым типом? Некоторые будут использовать другой перечислимый тип (например, ICollection), а не IList.