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
为空引用(在 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
服务类型。
返回
- 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 基类来请求跟踪服务,则可能会引发异常。