WorkflowRuntime.GetService Yöntem

Tanım

Aşırı Yüklemeler

GetService(Type)

İş akışı çalışma zamanı altyapısından belirtilen Type hizmetinin bir hizmetini alır.

GetService<T>()

İş akışı çalışma zamanı altyapısından belirtilen genel türdeki bir hizmeti alır.

GetService(Type)

İş akışı çalışma zamanı altyapısından belirtilen Type hizmetinin bir hizmetini alır.

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

Parametreler

serviceType
Type

Type Alınacak hizmetin.

Döndürülenler

Belirtilen Typehizmetinin hizmeti.

Uygulamalar

Özel durumlar

serviceType bir null başvurudur (Nothing Visual Basic'te).

Birden fazla tür serviceType hizmet bulundu.

Açıklamalar

GetServicebelirtilen Typeiçin birden fazla hizmet varsa bir InvalidOperationException oluşturur. Bu nedenle, belirtilen türde birden çok hizmetin içinde WorkflowRuntimemevcut olması mümkünse aşırı yüklenmiş yöntemlerinden GetAllServices birini kullanmanız gerekir. Örneğin, iş akışı çalışma zamanı altyapısının birden çok izleme hizmeti olabilir. Temel sınıfı belirterek TrackingService bir izleme hizmeti isterseniz, bir özel durum oluşturulabilir.

Şunlara uygulanır

GetService<T>()

İş akışı çalışma zamanı altyapısından belirtilen genel türdeki bir hizmeti alır.

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

Tür Parametreleri

T

Hizmet türü.

Döndürülenler

T

Belirtilen genel türdeki tek bir hizmet.

Özel durumlar

Genel türde birden fazla hizmet bulundu.

Örnekler

Aşağıdaki örnek, bir nesneden tek bir WorkflowRuntime hizmetin nasıl alınduğunu gösterir; bu örnekte türünde ManualWorkflowSchedulerServicebir hizmettir. Bu örnek İş Akışı İş Parçacığı Örneği'nden alınıyor.

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

Açıklamalar

GetService belirtilen genel tür için birden fazla hizmet varsa bir InvalidOperationException oluşturur. Bu nedenle, genel türdeki birden çok hizmetin içinde WorkflowRuntimemevcut olması mümkünse aşırı yüklenmiş yöntemlerinden GetAllServices birini kullanmanız gerekir. Örneğin, iş akışı çalışma zamanı altyapısının birden çok izleme hizmeti olabilir. Temel sınıfı belirterek TrackingService bir izleme hizmeti isterseniz, bir özel durum oluşturulabilir.

Şunlara uygulanır