public static IEnumerable <T> EnumerateObjects <T>(IEnumVdsObject enumobject) where T : class { uint count; do { enumobject.Next(1, out IUnknown unknown, out count); if (count > 0) { T o; try { o = (T)unknown; } catch { throw new InvalidCastException("不支持的类型"); } yield return(o); } } while (count > 0); enumobject.Reset(); }