WorkflowRuntime.GetService 메서드

정의

오버로드

GetService(Type)

워크플로 런타임 엔진에서 지정된 Type의 서비스를 검색합니다.

GetService<T>()

워크플로 런타임 엔진에서 지정된 제네릭 형식의 서비스를 검색합니다.

GetService(Type)

워크플로 런타임 엔진에서 지정된 Type의 서비스를 검색합니다.

public object GetService(Type serviceType);

매개 변수

serviceType
Type

검색할 서비스의 Type입니다.

반환

지정된 Type의 서비스입니다.

구현

예외

serviceType이 null 참조(Visual Basic의 경우 Nothing)인 경우

WorkflowRuntime이 이미 삭제된 경우

serviceType 형식의 서비스가 여러 개 있는 경우

설명

지정된 GetService에 대한 서비스가 여러 개 있으면 InvalidOperationException에서 Type을 throw합니다. 따라서 GetAllServices에 지정된 형식의 서비스가 여러 개 있을 수 있는 경우 WorkflowRuntime의 오버로드된 메서드 중 하나를 사용해야 합니다. 예를 들어 워크플로 런타임 엔진에는 여러 개의 추적 서비스가 있을 수 있습니다. TrackingService 기본 클래스를 지정하여 추적 서비스를 요청하면 예외가 throw될 수 있습니다.

적용 대상

.NET Framework 4.8.1 및 기타 버전
제품 버전
.NET Framework 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1

GetService<T>()

워크플로 런타임 엔진에서 지정된 제네릭 형식의 서비스를 검색합니다.

public T GetService<T>();

형식 매개 변수

T

서비스 형식입니다.

반환

T

지정된 제네릭 형식의 단일 서비스입니다.

예외

WorkflowRuntime이 이미 삭제된 경우

제네릭 형식의 서비스가 여러 개 있는 경우

예제

다음 예제에서는 WorkflowRuntime 개체에서 단일 서비스, 이 경우 ManualWorkflowSchedulerService 유형의 서비스를 검색하는 방법을 보여 줍니다. 이 예제에서는 합니다 Workflow Threading 샘플합니다.

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();
            }
        }
    }
}

설명

지정된 제네릭 형식에 대한 서비스가 여러 개 있으면 GetService에서 InvalidOperationException을 throw합니다. 따라서 GetAllServices에 해당 제네릭 형식의 서비스가 여러 개 있을 수 있는 경우 WorkflowRuntime의 오버로드된 메서드 중 하나를 사용해야 합니다. 예를 들어 워크플로 런타임 엔진에는 여러 개의 추적 서비스가 있을 수 있습니다. TrackingService 기본 클래스를 지정하여 추적 서비스를 요청하면 예외가 throw될 수 있습니다.

적용 대상

.NET Framework 4.8.1 및 기타 버전
제품 버전
.NET Framework 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1