我正在编写通用验证功能。它将使用反射来浏览对象的属性并验证它们。但是我遇到了收集属性的问题。我可以确定它是array
还是generic
但是无法投射它以循环其实体。
private static bool Validate(object model)
{
if (model.GetType().IsGenericType || model.GetType().IsArray)
{
//I want to convert model to IEnumerable here in order to loop throught it
//It seems that .NET 2.0 doesn't allow me to cast by using
IEnumerable lst = model as IEnumerable;
//or
IEnumerable lst = (IEnumerable) model;
}
}
更新:
愚蠢的我,原来是使用
IEnumerable lst = model as IEnumerable;
完美地工作。我得到的问题是,通过从.NET 4.0切换到.NET 2.0,我得出的结论是.NET 2.0不支持直接转换为IEnumerable
而没有提供特定的类型而且我没有&#39 ; t注意到System.Collection
尚未导入。我现在觉得自己像个白痴。
答案 0 :(得分:2)
IEnumerable lst = model as IEnumerable;
if(lst != null)
{
//loop
}
如果模型实现IEnumerable
。
以下内容会抛出无效的强制转换异常:
IEnumerable lst = (IEnumerable) model;