DynamicActivity 는 퍼블릭 생성자가 있는 구체적이고 봉인된 클래스입니다. DynamicActivity 는 활동 DOM을 사용하여 런타임에 활동 기능을 어셈블하는 데 사용할 수 있습니다.
DynamicActivity 기능
DynamicActivity 에는 실행 속성, 인수 및 변수에 액세스할 수 있지만 자식 활동 예약 또는 추적과 같은 런타임 서비스에는 액세스할 수 없습니다.
최상위 속성은 워크플로 Argument 개체를 사용하여 설정할 수 있습니다. 명령적 코드에서 이러한 인수는 새 형식의 CLR 속성을 사용하여 만들어집니다. XAML에서는 x:Class 및 x:Member 태그를 사용하여 선언됩니다.
DynamicActivity 인터페이스를 사용하여 ICustomTypeDescriptor디자이너와 함께 생성된 활동 디자이너에서 만든 활동은 다음 절차에서 설명한 대로 Load을(를) 동적으로 로드할 수 있습니다.
명령적 코드를 사용하여 런타임에 작업을 만들려면
OpenVisual Studio 2010.
파일, 새로 만들기, 프로젝트를 선택합니다. 프로젝트 형식 창의 Visual C#에서 워크플로 4.0을 선택하고 v2010 노드를 선택합니다. 템플릿 창에서 순차 워크플로 콘솔 애플리케이션을 선택합니다. 새 프로젝트 DynamicActivitySample의 이름을 지정합니다.
HelloActivity 프로젝트에서 Workflow1.xaml을 마우스 오른쪽 단추로 클릭하고 삭제를 선택합니다.
Program.cs를 엽니다. 파일 맨 위에 다음 지시문을 추가합니다.
using System.Collections.Generic;메서드의
Main내용을 다음 코드로 바꿉니다. 이 코드는 단일 Sequence 활동을 포함하는 활동을 만들고 WriteLine 새 동적 활동의 속성에 Implementation 할당합니다.//Define the input argument for the activity var textOut = new InArgument<string>(); //Create the activity, property, and implementation Activity dynamicWorkflow = new DynamicActivity() { Properties = { new DynamicActivityProperty { Name = "Text", Type = typeof(InArgument<String>), Value = textOut } }, Implementation = () => new Sequence() { Activities = { new WriteLine() { Text = new InArgument<string>(env => textOut.Get(env)) } } } }; //Execute the activity with a parameter dictionary WorkflowInvoker.Invoke(dynamicWorkflow, new Dictionary<string, object> { { "Text", "Hello World!" } }); Console.ReadLine();애플리케이션을 실행합니다. "Hello World!" 텍스트가 있는 콘솔 창이 표시됩니다.
XAML을 사용하여 런타임에 활동을 만들려면
Visual Studio 2010을 엽니다.
파일, 새로 만들기, 프로젝트를 선택합니다. 프로젝트 형식 창의 Visual C#에서 워크플로 4.0을 선택하고 v2010 노드를 선택합니다. 템플릿 창에서 워크플로 콘솔 애플리케이션을 선택합니다. 새 프로젝트 DynamicActivitySample의 이름을 지정합니다.
HelloActivity 프로젝트에서 Workflow1.xaml을 엽니다. 디자이너 아래쪽의 인수 옵션을 클릭합니다. 새로운
In형식의TextToWrite인수를String로 만듭니다.도구 상자의 기본 형식 섹션에서 디자이너 화면으로 WriteLine 작업을 끌어옵니다. 활동의
TextToWrite속성에 값을 할당합니다.Program.cs를 엽니다. 파일 맨 위에 다음 지시문을 추가합니다.
using System.Activities.XamlIntegration;메서드의
Main내용을 다음 코드로 바꿉니다.Activity act2 = ActivityXamlServices.Load(@"Workflow1.xaml"); results = WorkflowInvoker.Invoke(act2, new Dictionary<string, object> { { "TextToWrite", "HelloWorld!" } }); Console.ReadLine();애플리케이션을 실행합니다. "Hello World!" 텍스트가 있는 콘솔 창이 나타납니다.
솔루션 탐색기에서 Workflow1.xaml 파일을 마우스 오른쪽 단추로 클릭하고 코드 보기를 선택합니다. 활동 클래스는
x:Class로 생성되고, 속성은x:Property로 생성됩니다.
참고하십시오
.NET