EnumerableComCollection<TComEnumerator,TEnumerated> 类

定义

围绕 COM 样式 IEnumXXX 接口提供 IEnumerable 包装器的类型的泛型基类。

generic <typename TComEnumerator, typename TEnumerated>
public ref class EnumerableComCollection abstract : Microsoft::VisualStudio::Shell::IComEnumeratorRelay<TComEnumerator, TEnumerated>, System::Collections::Generic::IEnumerable<TEnumerated>
public abstract class EnumerableComCollection<TComEnumerator,TEnumerated> : Microsoft.VisualStudio.Shell.IComEnumeratorRelay<TComEnumerator,TEnumerated>, System.Collections.Generic.IEnumerable<TEnumerated>
type EnumerableComCollection<'ComEnumerator, 'Enumerated> = class
    interface seq<'Enumerated>
    interface IEnumerable
    interface IComEnumeratorRelay<'ComEnumerator, 'Enumerated>
Public MustInherit Class EnumerableComCollection(Of TComEnumerator, TEnumerated)
Implements IComEnumeratorRelay(Of TComEnumerator, TEnumerated), IEnumerable(Of TEnumerated)

类型参数

TComEnumerator

COM 枚举器类型 (例如 IEnumString)

TEnumerated

TComEnumerator (枚举的类型,例如字符串)

继承
EnumerableComCollection<TComEnumerator,TEnumerated>
派生
实现

注解

从此类派生的类将 COM 样式的 IEnumXXX 接口调整为可由 foreach 语句处理的形式。 理想情况下,此泛型类本身就足够了,而无需派生类执行该作业,但必须定义 C# 泛型的严格性会阻止这种情况。

此类必须调用 COM 枚举器上包装 (Next、Skip 等 ) 的方法,但泛型类型只能访问参数化类型约束中指定的参数化类型的属性和方法。 具体而言,如果我们在 TComEnumerator 上指定了告知编译器 TComEnumerator 实现 Next 的约束,则只能调用 TComEnumerator.Next。

COM IEnumXXX 接口是强类型 (即 IEnumXXX.Next 返回 XXX 对象的数组) 且没有公共基类,因此我们无法直接在 TComEnumerator 上放置约束。 这就是 IComEnumeratorRelay 的用武之地:EnumerableComCollection 要求其派生类实现强类型 IComEnumeratorRelay 接口,该接口允许泛型类型调用 COM 枚举器,而无需在 TComEnumerator 上放置约束。

构造函数

EnumerableComCollection<TComEnumerator,TEnumerated>(TComEnumerator)

为提供的枚举器初始化 的新实例 EnumerableComCollection<TComEnumerator,TEnumerated>

EnumerableComCollection<TComEnumerator,TEnumerated>(TComEnumerator, Int32)

为提供的枚举数和缓存大小初始化 的新实例 EnumerableComCollection<TComEnumerator,TEnumerated>

字段

DefaultCacheSize

默认缓存大小。

方法

Clone(TComEnumerator, TComEnumerator)

使用指定的枚举器 克隆项。

GetEnumerator()

获取枚举器。

NextItems(TComEnumerator, UInt32, TEnumerated[], UInt32)

获取指定数量的项。

Reset(TComEnumerator)

重置集合的计数器。

Skip(TComEnumerator, UInt32)

跳过指定数量的项。

显式接口实现

IEnumerable.GetEnumerator()

获取枚举器。

扩展方法

EmptyIfNull<T>(IEnumerable<T>)

如果枚举不为 null,则返回此枚举。 如果为 null,则返回空枚举。

适用于