WorkflowRuntime.GetService Metodo

Definizione

Overload

GetService(Type)

Recupera un servizio del Type specificato dal motore di runtime del flusso di lavoro.

GetService<T>()

Recupera un servizio del tipo generico specificato dal motore di runtime del flusso di lavoro.

GetService(Type)

Recupera un servizio del Type specificato dal motore di runtime del flusso di lavoro.

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

Parametri

serviceType
Type

Oggetto Type del servizio da recuperare.

Restituisce

Object

Servizio del Type specificato.

Implementazioni

Eccezioni

serviceType è un riferimento null (Nothing in Visual Basic).

L'oggetto WorkflowRuntime è già stato eliminato.

È stato trovato più di un servizio del tipo serviceType.

Commenti

GetService genera un'eccezione InvalidOperationException se esiste più di un servizio del Type specificato. Pertanto, è necessario utilizzare uno dei metodi di overload di GetAllServices se è possibile che più servizi del tipo specificato siano presenti in WorkflowRuntime. Ad esempio, è possibile che il motore di runtime del flusso di lavoro disponga di più servizi di rilevamento. Se si richiede un servizio di rilevamento specificando la classe di base TrackingService, è possibile che venga generata un'eccezione.

Si applica a

GetService<T>()

Recupera un servizio del tipo generico specificato dal motore di runtime del flusso di lavoro.

public:
generic <typename T>
 T GetService();
public T GetService<T> ();
member this.GetService : unit -> 'T
Public Function GetService(Of T) () As T

Parametri di tipo

T

Tipo di servizio.

Restituisce

T

Restituisce un singolo servizio del tipo generico specificato.

Eccezioni

Classe WorkflowRuntime già eliminata.

È stato trovato più di un servizio del tipo generico.

Esempio

Nell'esempio seguente viene illustrato come recuperare un singolo servizio da un oggetto WorkflowRuntime; in questo caso, un servizio di tipo ManualWorkflowSchedulerService. Questo esempio proviene dall'esempio di threading del flusso di lavoro.

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

Commenti

GetService genera un'eccezione InvalidOperationException se esiste più di un servizio del tipo generico specificato. Pertanto, è necessario utilizzare uno dei metodi di overload di GetAllServices se è possibile che più servizi del tipo generico siano presenti in WorkflowRuntime. Ad esempio, è possibile che il motore di runtime del flusso di lavoro disponga di più servizi di rilevamento. Se si richiede un servizio di rilevamento specificando la classe di base TrackingService, è possibile che venga generata un'eccezione.

Si applica a