WorkflowRuntime.GetService 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
多載
GetService(Type) |
從工作流程執行階段引擎中擷取屬於指定 Type 的服務。 |
GetService<T>() |
從工作流程執行階段引擎中擷取指定之泛型型別的服務。 |
GetService(Type)
從工作流程執行階段引擎中擷取屬於指定 Type 的服務。
public:
virtual System::Object ^ GetService(Type ^ serviceType);
public object GetService (Type serviceType);
abstract member GetService : Type -> obj
override this.GetService : Type -> obj
Public Function GetService (serviceType As Type) As Object
參數
傳回
屬於指定 Type 的服務。
實作
例外狀況
serviceType
為 null 參考 (在 Visual Basic 中為 Nothing
)。
找到一個以上的 serviceType
類型的服務。
備註
如果存在一個以上屬於指定之 GetService 的服務,InvalidOperationException 會擲回 Type。 因此,如果 GetAllServices 有多個屬於指定型別的服務,您應該使用其中一個 WorkflowRuntime 的多載方法。 例如,工作流程執行階段引擎可能有多個追蹤服務。 如果利用指定 TrackingService 基底類別的方式要求追蹤服務,可能會擲回例外狀況。
適用於
GetService<T>()
從工作流程執行階段引擎中擷取指定之泛型型別的服務。
public:
generic <typename T>
T GetService();
public T GetService<T> ();
member this.GetService : unit -> 'T
Public Function GetService(Of T) () As T
類型參數
- T
服務類型。
傳回
屬於指定泛型型別的單一服務。
例外狀況
找到一個以上泛型型別的服務。
範例
下列範例示範如何從 WorkflowRuntime 物件擷取單一服務 (在這個案例中是 ManualWorkflowSchedulerService 類型的服務)。 此範例來自 工作流程執行緒範例。
protected override CompositeActivity OnCreateNewBranch()
{
return new ParallelIfBranch();
}
private void OnAddBranch(object sender, EventArgs e)
{
CompositeActivity activity1 = this.OnCreateNewBranch();
CompositeActivity activity2 = base.Activity as CompositeActivity;
if ((activity2 != null) && (activity1 != null))
{
int num1 = this.ContainedDesigners.Count;
Activity[] activityArray1 = new Activity[] { activity1 };
if (CanInsertActivities(new ConnectorHitTestInfo(this, HitTestLocations.Designer, activity2.Activities.Count),
new List<Activity>(activityArray1).AsReadOnly()))
{
CompositeActivityDesigner.InsertActivities(this,
new ConnectorHitTestInfo(this, HitTestLocations.Designer, activity2.Activities.Count),
new List<Activity>(activityArray1).AsReadOnly(),
string.Format("Adding branch {0}", activity1.GetType().Name));
if ((this.ContainedDesigners.Count > num1) && (this.ContainedDesigners.Count > 0))
{
this.ContainedDesigners[this.ContainedDesigners.Count - 1].EnsureVisible();
}
}
}
}
Protected Overrides Function OnCreateNewBranch() As CompositeActivity
Return New ParallelIfBranch()
End Function
Private Sub OnAddBranch(ByVal sender As Object, ByVal e As EventArgs)
Dim activity1 As CompositeActivity = Me.OnCreateNewBranch()
Dim activity2 As CompositeActivity = CType(MyBase.Activity, CompositeActivity)
If (activity2 IsNot Nothing) And (activity1 IsNot Nothing) Then
Dim num1 As Integer = Me.ContainedDesigners.Count
Dim activityArray1() As Activity = {activity1}
If (CanInsertActivities(New ConnectorHitTestInfo(Me, HitTestLocations.Designer, activity2.Activities.Count), _
New List(Of Activity)(activityArray1).AsReadOnly())) Then
CompositeActivityDesigner.InsertActivities(Me, _
New ConnectorHitTestInfo(Me, HitTestLocations.Designer, activity2.Activities.Count), _
New List(Of Activity)(activityArray1).AsReadOnly(), _
String.Format("Adding branch 0}", activity1.GetType().Name))
If (Me.ContainedDesigners.Count > num1) And (Me.ContainedDesigners.Count > 0) Then
Me.ContainedDesigners(Me.ContainedDesigners.Count - 1).EnsureVisible()
End If
End If
End If
End Sub
備註
如果存在一個以上屬於指定之泛型型別的服務,GetService 會擲回 InvalidOperationException。 因此,如果 GetAllServices 中有多個屬於泛型型別的服務,您應該使用其中一個 WorkflowRuntime 的多載方法。 例如,工作流程執行階段引擎可能有多個追蹤服務。 如果利用指定 TrackingService 基底類別的方式要求追蹤服務,可能會擲回例外狀況。