EnumerableComCollection<TComEnumerator,TEnumerated> 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
提供 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 上放置條件約束。
建構函式
欄位
DefaultCacheSize |
默認快取大小。 |
方法
Clone(TComEnumerator, TComEnumerator) |
使用指定的列舉值複製專案。 |
GetEnumerator() |
取得列舉值。 |
NextItems(TComEnumerator, UInt32, TEnumerated[], UInt32) |
取得指定的項目數。 |
Reset(TComEnumerator) |
重設集合的計數器。 |
Skip(TComEnumerator, UInt32) |
略過指定的項目數目。 |
明確介面實作
IEnumerable.GetEnumerator() |
取得列舉值。 |
擴充方法
EmptyIfNull<T>(IEnumerable<T>) |
如果不是 Null,則傳回這個列舉。 如果是 null,則傳回空列舉。 |