建立自訂 Foreach 列舉值
建立自訂 Foreach 列舉值的步驟,與建立 Integration Services 之其他自訂物件的步驟類似:
建立繼承自基底類別的新類別。 對於 Foreach 列舉值而言,基底類別是 ForEachEnumerator。
將可識別物件類型的屬性套用至此類別。 對於 Foreach 列舉值而言,此屬性是 DtsForEachEnumeratorAttribute。
覆寫基底類別之方法與屬性的實作。 對於 Foreach 列舉值而言,最重要的是 GetEnumerator 方法。
(選擇性) 開發自訂使用者介面。 對於 Foreach 列舉值而言,這需要實作 IDTSForEachEnumeratorUI 介面的類別。
自訂列舉值是由 ForEachLoop 容器所裝載。 在執行階段,ForEachLoop 容器會呼叫自訂列舉值的 GetEnumerator 方法。 自訂列舉值會傳回可實作 IEnumerable 介面的物件,例如 ArrayList。 然後,ForEachLoop 會逐一查看集合中的每一個元素、透過使用者定義的變數將目前元素的值提供給控制流程,然後在容器內執行此控制流程。
自訂 ForEach 列舉值使用者入門
建立專案和類別
因為所有的 Managed Foreach 列舉值都是從 ForEachEnumerator 基底類別衍生,所以建立自訂 Foreach 列舉值的第一個步驟是以慣用的 Managed 程式語言建立類別庫專案,並建立繼承自此基底類別的類別。 在此衍生的類別中,您將覆寫基底類別的方法與屬性,以實作自訂功能。
在相同的方案中,為自訂使用者介面建立另一個類別庫專案。 建議您針對使用者介面使用不同的組件以便能輕鬆地部署,因為它允許您獨立地更新和重新部署 Foreach 列舉值或是其使用者介面。
透過使用強式名稱金鑰檔,將兩個專案都設定成可簽署將在建立時期產生的組件。
套用 DtsForEachEnumerator 屬性
將 DtsForEachEnumeratorAttribute 屬性套用至您已建立的類別,以便將它識別為Foreach 列舉值。 此屬性會提供設計階段資訊,例如 Foreach 列舉值的名稱和描述。 Name 屬性會出現在 [Foreach 迴圈編輯器] 對話方塊內 [集合] 索引標籤上的可用列舉值下拉式清單內。
使用 UITypeName 屬性將 Foreach 列舉值連結至其自訂使用者介面。 如需取得此屬性所需的公開金鑰 Token,可以使用 sn.exe -t,從要用於簽署使用者介面組件的金鑰組 (.snk) 檔案顯示公開金鑰 Token。
Imports System
Imports Microsoft.SqlServer.Dts.Runtime
Namespace Microsoft.Samples.SqlServer.Dts
<DtsForEachEnumerator(DisplayName = "MyEnumerator", Description="A sample custom enumerator", UITypeName="FullyQualifiedTypeName,AssemblyName,Version=1.00.000.00,Culture=Neutral,PublicKeyToken=<publickeytoken>")> _
Public Class MyEnumerator
Inherits ForEachEnumerator
'Insert code here.
End Class
End Namespace
using System;
using Microsoft.SqlServer.Dts.Runtime;
namespace Microsoft.Samples.SqlServer.Dts
{
[DtsForEachEnumerator( DisplayName = "MyEnumerator", Description="A sample custom enumerator", UITypeName="FullyQualifiedTypeName,AssemblyName,Version=1.00.000.00,Culture=Neutral,PublicKeyToken=<publickeytoken>")]
public class MyEnumerator : ForEachEnumerator
{
//Insert code here.
}
}
建立、部署和偵錯自訂列舉值
在 Integration Services 中建立、部署和偵錯自訂 Foreach 列舉值的步驟,非常類似於其他類型的自訂物件所需的步驟。 如需詳細資訊,請參閱<建立、部署和偵錯自訂物件>。
|