public void SetValue <T>(OutArgument <T> argument, T value)
 {
     this.ThrowIfDisposed();
     if (argument != null)
     {
         argument.ThrowIfNotInTree();
         this.SetValueCore <T>(argument.RuntimeArgument, value);
     }
 }
 public T GetValue <T>(OutArgument <T> argument)
 {
     this.ThrowIfDisposed();
     if (argument == null)
     {
         throw FxTrace.Exception.ArgumentNull("argument");
     }
     argument.ThrowIfNotInTree();
     return(this.GetValueCore <T>(argument.RuntimeArgument));
 }
 public static OutArgument CreateReference(OutArgument argumentToReference, string referencedArgumentName)
 {
     if (argumentToReference == null)
     {
         throw FxTrace.Exception.ArgumentNull("argumentToReference");
     }
     if (string.IsNullOrEmpty(referencedArgumentName))
     {
         throw FxTrace.Exception.ArgumentNullOrEmpty("referencedArgumentName");
     }
     return((OutArgument)ActivityUtilities.CreateReferenceArgument(argumentToReference.ArgumentType, ArgumentDirection.Out, referencedArgumentName));
 }
 public static OutArgument CreateReference(OutArgument argumentToReference, string referencedArgumentName)
 {
     if (argumentToReference == null)
     {
         throw FxTrace.Exception.ArgumentNull("argumentToReference");
     }
     if (string.IsNullOrEmpty(referencedArgumentName))
     {
         throw FxTrace.Exception.ArgumentNullOrEmpty("referencedArgumentName");
     }
     return (OutArgument) ActivityUtilities.CreateReferenceArgument(argumentToReference.ArgumentType, ArgumentDirection.Out, referencedArgumentName);
 }
Exemplo n.º 5
0
        //[SuppressMessage(FxCop.Category.Design, FxCop.Rule.ConsiderPassingBaseTypesAsParameters,
        //    Justification = "Generic needed for type inference")]
        public void SetValue <T>(OutArgument <T> argument, T value)
        {
            ThrowIfDisposed();

            if (argument == null)
            {
                // We want to shortcut if the argument is null
                return;
            }

            argument.ThrowIfNotInTree();

            SetValueCore(argument.RuntimeArgument, value);
        }
 public CodeActivityContext(System.Activities.CodeActivityContext context, OutArgument<string[]> buildErrors)
 {
     _context = context;
     _buildErrors = buildErrors;
 }
Exemplo n.º 7
0
		public static OutArgument CreateReference (OutArgument argumentToReference, string referencedArgumentName)
		{
			throw new NotImplementedException ();
		}
Exemplo n.º 8
0
        // Updates and returns the version of the specified attribute.
        private string UpdateVersion(string attributeName, string format, OutArgument<Version> maxVersion)
        {
            var oldValue = this.file[attributeName];
            if (oldValue == null || string.IsNullOrWhiteSpace(format))
            {
                // do nothing
                return oldValue;
            }

            // parse old version (handle * character)
            bool containsWildcard = oldValue.Contains('*');
            string versionPattern = "{0}.{1}.{2}.{3}";

            if (containsWildcard)
            {
                if (oldValue.Split('.').Length == 3)
                {
                    oldValue = oldValue.Replace("*", "0.0");
                    versionPattern = "{0}.{1}.*";
                }
                else
                {
                    oldValue = oldValue.Replace("*", "0");
                    versionPattern = "{0}.{1}.{2}.*";
                }                
            }

            if (!VersionParser.IsMatch(oldValue))
            {
                throw new FormatException("Current value for attribute '" + attributeName + "' is not in a correct version format.");
            }

            var version = new Version(oldValue);

            // update version
            var tokens = format.Split('.');
            if (tokens.Length != 4)
            {
                throw new FormatException("Specified value for attribute '" + attributeName + "'  is not a correct version format.");
            }

            version = new Version(
                Convert.ToInt32(this.ReplaceTokens(tokens[0], version.Major)),
                Convert.ToInt32(this.ReplaceTokens(tokens[1], version.Minor)),
                Convert.ToInt32(this.ReplaceTokens(tokens[2], version.Build)),
                Convert.ToInt32(this.ReplaceTokens(tokens[3], version.Revision)));

            this.file[attributeName] = string.Format(versionPattern, version.Major, version.Minor, version.Build, version.Revision);

            if (version > maxVersion.Get(this.ActivityContext))
            {
                maxVersion.Set(this.ActivityContext, version);
            }

            return version.ToString();
        }
 public static ReceiveMessageContent Create(OutArgument message, Type declaredMessageType)
 {
     return new ReceiveMessageContent(message) { DeclaredMessageType = declaredMessageType };
 }
Exemplo n.º 10
0
 public void SetValue <T> (OutArgument <T> argument, T value)
 {
     throw new NotImplementedException();
 }
 public ReceiveMessageContent(OutArgument message)
     : this()
 {
     this.Message = message;
 }
        // Copies the specified attribute string value to the specified argument if present.
        private void ReadStringAttribute(string attributeName, OutArgument argument)
        {
            var value = this.file[attributeName];

            if (value == null)
            {
                // do nothing
                return;
            }

            argument.Set(this.ActivityContext, value);
        }
Exemplo n.º 13
0
 public static OutArgument CreateReference(OutArgument argumentToReference, string referencedArgumentName)
 {
     throw new NotImplementedException();
 }
Exemplo n.º 14
0
        public static void CacheMetadataHelper(
            ActivityMetadata metadata, InArgument<IEnumerable> input, OutArgument<Collection<ErrorRecord>> errors, string commandText, string typeName,
            string displayName, IDictionary<string, Argument> variables, IDictionary<string, InArgument> parameters,
            IDictionary<string, Argument> childVariables, IDictionary<string, InArgument> childParameters)
        {
            childVariables.Clear();
            childParameters.Clear();
            RuntimeArgument inputArgument = new RuntimeArgument("Input", typeof(IEnumerable), ArgumentDirection.In);
            metadata.Bind(input, inputArgument);
            metadata.AddArgument(inputArgument);

            RuntimeArgument errorArgument = new RuntimeArgument("Errors", typeof(Collection<ErrorRecord>), ArgumentDirection.Out);
            metadata.Bind(errors, errorArgument);
            metadata.AddArgument(errorArgument);

            if (commandText == null || string.IsNullOrEmpty(commandText.Trim()))
            {
                metadata.AddValidationError(string.Format(ErrorMessages.PowerShellRequiresCommand, displayName));
            }

            foreach (KeyValuePair<string, Argument> variable in variables)
            {
                string name = variable.Key;
                Argument argument = variable.Value;
                RuntimeArgument ra = new RuntimeArgument(name, argument.ArgumentType, argument.Direction, true);
                metadata.Bind(argument, ra);
                metadata.AddArgument(ra);

                Argument childArgument = Argument.Create(argument.ArgumentType, argument.Direction);
                childVariables.Add(name, Argument.CreateReference(argument, name));
            }

            foreach (KeyValuePair<string, InArgument> parameter in parameters)
            {
                string name = parameter.Key;
                InArgument argument = parameter.Value;
                RuntimeArgument ra;
                if (argument.ArgumentType == typeof(bool))
                {
                    ra = new RuntimeArgument(name, argument.ArgumentType, argument.Direction, false);
                }
                else
                {
                    ra = new RuntimeArgument(name, argument.ArgumentType, argument.Direction, true);
                }
                metadata.Bind(argument, ra);
                metadata.AddArgument(ra);

                Argument childArgument = Argument.Create(argument.ArgumentType, argument.Direction);
                childParameters.Add(name, Argument.CreateReference(argument, name) as InArgument);
            }
        }
        // Copies the specified attribute boolean value to the specified argument if present.
        private void ReadBoolAttribute(string attributeName, OutArgument argument)
        {
            var value = this.file[attributeName];

            if (value == null)
            {
                argument.Set(this.ActivityContext, null);

                return;
            }

            argument.Set(this.ActivityContext, Convert.ToBoolean(value));
        }
Exemplo n.º 16
0
        protected override void CacheMetadata(NativeActivityMetadata metadata)
        {
            if (this.Result != null)
            {
                RuntimeArgument resultArgument = new RuntimeArgument(Constants.Result, this.Result.ArgumentType, ArgumentDirection.In);
                metadata.Bind(this.Result, resultArgument);
                metadata.AddArgument(resultArgument);
            }

            if (this.parameters != null)
            {
                int count = 0;
                foreach (InArgument parameter in this.parameters)
                {
                    RuntimeArgument parameterArgument = new RuntimeArgument(Constants.Parameter + count++, parameter.ArgumentType, ArgumentDirection.In);
                    metadata.Bind(parameter, parameterArgument);
                    metadata.AddArgument(parameterArgument);
                }
            }

            RuntimeArgument messageArgument = new RuntimeArgument(Constants.Message, Constants.MessageType, ArgumentDirection.Out, true);
            if (this.Message == null)
            {
                this.Message = new OutArgument<Message>();
            }
            metadata.Bind(this.Message, messageArgument);
            metadata.AddArgument(messageArgument);

            RuntimeArgument correlatesWithArgument = new RuntimeArgument(Constants.CorrelatesWith, Constants.CorrelationHandleType, ArgumentDirection.In);
            if (this.CorrelatesWith == null)
            {
                this.CorrelatesWith = new InArgument<CorrelationHandle>();
            }
            metadata.Bind(this.CorrelatesWith, correlatesWithArgument);
            metadata.AddArgument(correlatesWithArgument);

        }
        // Copies the specified attribute GUID value to the specified argument if present.
        private void ReadGuidAttribute(string attributeName, OutArgument argument)
        {
            var value = this.file[attributeName];

            if (value == null)
            {
                argument.Set(this.ActivityContext, null);

                return;
            }

            argument.Set(this.ActivityContext, new System.Guid(value));
        }
 public ReceiveMessageContent(OutArgument message, Type declaredMessageType)
     : this(message)
 {
     this.DeclaredMessageType = declaredMessageType;
 }
Exemplo n.º 19
0
 public static ReceiveMessageContent Create(OutArgument message)
 {
     return new ReceiveMessageContent(message);
 }
Exemplo n.º 20
0
 public T GetValue <T> (OutArgument <T> argument)
 {
     throw new NotImplementedException();
 }
Exemplo n.º 21
0
        static Activity CreateAverageCalculationWorkflow()
        {
            // Variables
            var iterationVariable = new DelegateInArgument<int>() { Name = "iterationVariable" };
            var accumulator = new Variable<int>() { Default = 0, Name = "accumulator" };

            // Define the Input and Output arguments that the DynamicActivity binds to
            var numbers = new InArgument<List<int>>();
            var average = new OutArgument<double>();

            var result = new Variable<double>() { Name = "result" };

            return new DynamicActivity()
            {
                DisplayName = "Find average",
                Properties =
                {
                    // Input argument
                    new DynamicActivityProperty
                    {
                        Name = "Numbers",
                        Type = typeof(InArgument<List<int>>),
                        Value = numbers
                    },
                    // Output argument
                    new DynamicActivityProperty
                    {
                        Name = "Average",
                        Type = typeof(OutArgument<double>),
                        Value = average
                    }
                },
                Implementation = () =>
                    new Sequence
                    {
                        Variables = { result, accumulator },
                        Activities =
                        {
                            new ForEach<int>
                            {
                                Values =  new ArgumentValue<IEnumerable<int>> { ArgumentName = "Numbers" },
                                Body = new ActivityAction<int>
                                {
                                    Argument = iterationVariable,
                                    Handler = new Assign<int>
                                    {
                                        To = accumulator,
                                        Value = new InArgument<int>(env => iterationVariable.Get(env) +  accumulator.Get(env))
                                    }
                                }
                            },

                            // Calculate the average and assign to the output argument.
                            new Assign<double>
                            {
                                To = new ArgumentReference<double> { ArgumentName = "Average" },
                                Value = new InArgument<double>(env => accumulator.Get(env) / numbers.Get(env).Count<int>())
                            },
                        }
                    }
            };
        }