Exemplo n.º 1
0
        /// <summary>
        /// Initializes a new instance of the <see cref="ViewReference"/> class.
        /// </summary>
        /// <param name="viewReference">
        /// The view reference.
        /// </param>
        /// <param name="currentContext">
        /// The current context.
        /// </param>
        /// <param name="addValues">
        /// The add values.
        /// </param>
        /// <param name="yieldAddValues">
        /// if set to <c>true</c> [yield add values].
        /// </param>
        public ViewReference(
            ViewReference viewReference,
            Dictionary <string, string> currentContext,
            Dictionary <string, object> addValues,
            bool yieldAddValues)
        {
            this.ViewName = viewReference.ViewName;
            this.Name     = viewReference.Name;
            if (currentContext != null)
            {
                this.Arguments = new Dictionary <string, ReferenceArgument>();
                if (viewReference.Arguments != null)
                {
                    foreach (var arg in viewReference.Arguments.Values)
                    {
                        var currentContextValue = currentContext.ValueOrDefault(arg.Value);
                        if (currentContextValue != null)
                        {
                            this.Arguments[arg.Name] = new ReferenceArgument(arg, currentContextValue);
                        }
                        else
                        {
                            this.Arguments[arg.Name] = arg;
                        }
                    }
                }
            }
            else
            {
                this.Arguments = new Dictionary <string, ReferenceArgument>(viewReference.Arguments);
            }

            if (addValues != null)
            {
                foreach (string key in addValues.Keys)
                {
                    ReferenceArgument arg = this.Arguments.ValueOrDefault(key);
                    if (!yieldAddValues || string.IsNullOrWhiteSpace(arg?.Value))
                    {
                        this.Arguments[key] = new ReferenceArgument(key, addValues[key] as string);
                    }
                }
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Initializes a new instance of the <see cref="ViewReference"/> class.
        /// </summary>
        /// <param name="definition">
        /// The definition.
        /// </param>
        /// <param name="name">
        /// The name.
        /// </param>
        public ViewReference(List <object> definition, string name)
        {
            this.ViewName = (string)definition[1];
            var parameterDefs = (definition[2] as JArray)?.ToObject <List <object> >();

            if (parameterDefs != null)
            {
                this.Arguments = new Dictionary <string, ReferenceArgument>();

                // var arg = new ReferenceArgument(parameters);
                foreach (var paramDef in parameterDefs)
                {
                    var parameters = (paramDef as JArray)?.ToObject <List <string> >();
                    var arg        = new ReferenceArgument(parameters);
                    if (!string.IsNullOrWhiteSpace(arg.Name))
                    {
                        this.Arguments[arg.Name] = arg;
                    }
                }
            }

            this.Name = name;
            this.def  = definition;
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="ReferenceArgument"/> class.
 /// </summary>
 /// <param name="argument">
 /// The argument.
 /// </param>
 /// <param name="value">
 /// The value.
 /// </param>
 public ReferenceArgument(ReferenceArgument argument, string value)
 {
     this.Name  = argument.Name;
     this.Type  = argument.Type;
     this.Value = value;
 }