鉴于这种:
class InvoiceHeader {
public int InvoiceHeaderId { get; set; }
IList<InvoiceDetail> LineItems { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我目前正在使用此代码来检测类是否具有集合属性:
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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
是否有一般方法来检测LineItems是否是可枚举类型?有些将使用其他可枚举类型(例如ICollection),而不是IList.
Mag*_*nus 46
您的代码实际上并未检查属性是否为Enumerable类型,但它们是否为通用IList.试试这个:
if(typeof(Enumerable).IsAssignableFrom(p.PropertyType))
{
System.Windows.Forms.MessageBox.Show(p.Name);
}
Run Code Online (Sandbox Code Playgroud)
或这个
if (p.PropertyType.GetInterfaces().Contains(typeof(IEnumerable)))
{
System.Windows.Forms.MessageBox.Show(p.Name);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15445 次 |
| 最近记录: |