ffb611fd5b558bb614c636de53de6911e8f6e78b
[mono.git] / mcs / class / referencesource / System.Activities.Presentation / System.Activities.Core.Presentation / System / ServiceModel / Activities / Presentation / Factories / ReceiveAndSendReplyFactory.cs
1 //------------------------------------------------------------
2 // Copyright (c) Microsoft Corporation.  All rights reserved.
3 //------------------------------------------------------------
4
5 namespace System.ServiceModel.Activities.Presentation.Factories
6 {
7     using System.Activities;
8     using System.Activities.Presentation;
9     using System.Activities.Statements;
10     using System.ServiceModel.Activities;
11     using System.Windows;
12     using System.Xml.Linq;
13     using Microsoft.VisualBasic.Activities;
14     using System.Activities.Presentation.View;
15     using System.Activities.Presentation.Services;
16     using System.Activities.Expressions;
17
18     public sealed class ReceiveAndSendReplyFactory : IActivityTemplateFactory
19     {
20         const string correlationHandleNamePrefix = "__handle";
21         static string requiredAssemblyName = typeof(CorrelationHandle).Assembly.GetName().Name;
22         static string requiredNamespace = typeof(CorrelationHandle).Namespace;
23
24         public Activity Create(DependencyObject target)
25         {            
26             string correlationHandleName = ActivityDesignerHelper.GenerateUniqueVariableNameForContext(target, correlationHandleNamePrefix);
27
28             Variable<CorrelationHandle> requestReplyCorrelation = new Variable<CorrelationHandle> { Name = correlationHandleName };
29
30             Receive receive = new Receive
31             {
32                 OperationName = "Operation1",
33                 ServiceContractName = XName.Get("IService", "http://tempuri.org/"),
34                 CorrelationInitializers =
35                 {
36                     new RequestReplyCorrelationInitializer
37                     {
38                         CorrelationHandle = new VariableValue<CorrelationHandle> { Variable = requestReplyCorrelation }
39                     }
40                 }
41             };
42
43
44             Sequence sequence = new Sequence()
45             {
46                 Variables = { requestReplyCorrelation },
47                 Activities =
48                 {
49                     receive,
50                     new SendReply
51                     {    
52                         DisplayName = "SendReplyToReceive",
53                         Request = receive,
54                     },
55                 }
56             };
57
58             return sequence;
59         }
60     }
61 }