在.NET 2.0中将对象转换为IEnumerable

时间:2014-04-29 06:14:33

标签: c# .net reflection casting

我正在编写通用验证功能。它将使用反射来浏览对象的属性并验证它们。但是我遇到了收集属性的问题。我可以确定它是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尚未导入。我现在觉得自己像个白痴。

P / S:对不起你们浪费时间

1 个答案:

答案 0 :(得分:2)

IEnumerable lst = model as IEnumerable;
if(lst != null)
{
    //loop
}

如果模型实现IEnumerable

,这应该有效

以下内容会抛出无效的强制转换异常:

IEnumerable lst = (IEnumerable) model;