如何检查属性是否为IList,如果是,则分配新的空值

时间:2018-11-16 11:09:17

标签: c# .net-core

我想在我的EntityBase类中做类似的事情:

public EntityBase()
{
    CreatedDate = DateTime.Now;
    ModifiedDate = DateTime.Now;

    foreach (var property in this.GetType().GetProperties())
    {
        if (property is IList)
            property.SetValue(property, new IList());
    }
}

确保我的所有实体中都没有null列表

但是,这不适用于

  1. if (property is IList<object>)
  2. if (property is IList<T>)

因为在情况1中,该属性被跳过(因为它是类型IList<Package>而不是object),并且在情况2中,我无法访问目录中的T当前上下文

是否可能发生这种情况,还是只需要手动分配每个实体的构造函数中的所有IList属性?

1 个答案:

答案 0 :(得分:0)

继续这样一个事实,您的目标是“确保我的任何实体中都没有空列表”

为什么不只在具有列表的每个实体的构造函数中实例化列表。在问题中使用foreach方法会很慢,而且也不是很干净。