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