Sdílet prostřednictvím


WorkflowRuntime.GetService Metoda

Definice

Přetížení

GetService(Type)

Načte službu zadaného Type z modulu běhu pracovního postupu.

GetService<T>()

Načte službu zadaného obecného typu z modulu běhu pracovního postupu.

GetService(Type)

Načte službu zadaného Type z modulu běhu pracovního postupu.

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

Parametry

serviceType
Type

Služba Type , která se má načíst.

Návraty

Object

Služba zadaného Type.

Implementuje

Výjimky

serviceTypeje nulový odkaz (Nothingv Visual Basic).

Bylo nalezeno více než jedna služba typu serviceType .

Poznámky

GetService vyvolá, pokud pro zadanou InvalidOperationException Typeslužbu existuje více než jedna služba . Proto byste měli použít jednu z přetížených metod GetAllServices , pokud je možné, že více služeb zadaného typu jsou přítomné v WorkflowRuntimesouboru . Například modul běhu pracovního postupu může mít více sledovacích služeb. Pokud požadujete sledovací službu zadáním TrackingService základní třídy, je možné, že dojde k výjimce.

Platí pro

GetService<T>()

Načte službu zadaného obecného typu z modulu běhu pracovního postupu.

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

Parametry typu

T

Typ služby.

Návraty

T

Jedna služba zadaného obecného typu.

Výjimky

Byla nalezena více než jedna služba obecného typu.

Příklady

Následující příklad ukazuje, jak načíst jednu službu z objektu WorkflowRuntime ; v tomto případě služba typu ManualWorkflowSchedulerService. Tento příklad je z ukázky vláken pracovního postupu.

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

Poznámky

GetService vyvolá, InvalidOperationException pokud pro zadaný obecný typ existuje více než jedna služba. Proto byste měli použít jednu z přetížených metod GetAllServices , pokud je možné, že více služeb obecného typu jsou přítomné v souboru WorkflowRuntime. Například modul běhu pracovního postupu může mít více sledovacích služeb. Pokud požadujete sledovací službu zadáním TrackingService základní třídy, je možné, že dojde k výjimce.

Platí pro