WorkflowRuntime.GetService Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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
Návraty
Služba zadaného Type.
Implementuje
Výjimky
serviceType
je nulový odkaz (Nothing
v Visual Basic).
Už je WorkflowRuntime zlikvidován.
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
Už WorkflowRuntime byl zlikvidován.
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.