我建议使用IEnumerable,只是因为它可以与其他列表一起使用。
但除此之外。您可以使用枚举数,它存在于每个可枚举数上。只要你找到第一个非空元素,返回true:
public override bool IsValid(object value)
{
var list = value as IEnumerable;
var enumerator = list != null ? list.GetEnumerator() : null;
if (enumerator != null)
while(enumerator.MoveNext())
if(enumerator.Current != null)
return true;
return false;
}
第二个想法,你可能会做得更好。通过你的清单上调用Cast<object>()
你得到一个通用IEnumerable<object>
上,您可以使用所有强大的LINQ的并调用Count(e => e != null)
您枚举:
public override bool IsValid(object value)
{
var list = value as IEnumerable;
var enumerable = list != null ? list.Cast<object>() : null;
return enumerable != null && enumerable.Count(e => e != null) >= 1;
}
其次,由一种叫做
IsEmpty
属性提升自己的类型你得到什么物体?一个自定义的?如果是这样,你不能也提供一个名为'IsEmpty'的属性吗? –我不太清楚你的属性是什么意思。是否意味着列表的实际元素不应该是非空的,或者你想检查每个元素的每个属性是否为非null? –