有鑑於此:有沒有一種通用的方法來檢測一個屬性的類型是一個枚舉類型?
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);
}
}
}
是否有檢測,如果了LineItem的一般方式是一個枚舉類型?有些會使用其他枚舉類型(例如ICollection),而不是IList。
p.PropertyType.GetInterfaces()。Contains(typeof(IEnumerable))&& p.PropertyType!= typeof(String)否則一個String屬性也會傳遞這個condigion – Oleg
並不是所有的枚舉都是'IEnumerable'我相信帶'GetEnumerator'函數的任何東西實際上都可以在'foreach'語句中使用 –
儘管它可能有點明顯,但值得指出的是字符串也是一個枚舉類型。如果有人想檢查一個屬性是否是任何類型的列表或集合,使用ICollection會更合適。 – XtraSimplicity