WorkflowRuntime.GetService Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Перегрузки
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
является неопределенной ссылкой (Nothing
в Visual Basic).
Объект WorkflowRuntime уже удален.
Обнаружено больше одной службы типа 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 уже удален.
Обнаружено больше одной службы универсального типа.
Примеры
В следующем примере демонстрируется извлечение одной службы из объекта 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 возможно формирование исключения.