WorkflowRuntime.GetService Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
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
Döndürülenler
Belirtilen Typehizmetinin hizmeti.
Uygulamalar
Özel durumlar
serviceType
bir null başvurudur (Nothing
Visual Basic'te).
WorkflowRuntime zaten atılır.
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
Belirtilen genel türdeki tek bir hizmet.
Özel durumlar
WorkflowRuntime zaten atılmıştır.
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.