コード例 #1
0
        private static string ResolverValue(ValueStrategies valueStrategy, string value, string otherValue)
        {
            var response = value;

            if (valueStrategy.HasFlag(ValueStrategies.Force))
            {
                response = otherValue;
            }
            else if (valueStrategy.HasFlag(ValueStrategies.ForceOnEmpty))
            {
                response =
                    ((string)response).IsNullOrEmpty()
                                                ? otherValue
                                                : value;
            }
            else if (valueStrategy.HasFlag(ValueStrategies.Sum))
            {
                response =
                    Convert.ToString(
                        Convert.ToDouble(
                            (response.IsNotNullOrEmpty() ? response : "0"),
                            System.Globalization.CultureInfo.InvariantCulture) +

                        Convert.ToDouble(
                            (otherValue.IsNotNullOrEmpty() ? otherValue : "0"),
                            System.Globalization.CultureInfo.InvariantCulture), System.Globalization.CultureInfo.InvariantCulture);
            }
            else if (valueStrategy.HasFlag(ValueStrategies.Merge))
            {
                response = String.Concat(value, otherValue);
            }

            return(response);
        }
コード例 #2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="valueStrategy"></param>
        /// <param name="value"></param>
        /// <param name="otherValue"></param>
        /// <returns></returns>
        private static JToken ResolverValue(ValueStrategies valueStrategy, JToken value, JToken otherValue)
        {
            var response = value;

            if (valueStrategy.HasFlag(ValueStrategies.Force))
            {
                response = otherValue;
            }
            else if (valueStrategy.HasFlag(ValueStrategies.ForceOnEmpty))
            {
                response =
                    ((string)response).IsNullOrEmpty()
                                                ? otherValue
                                                : value;
            }
            else if (valueStrategy.HasFlag(ValueStrategies.Sum))
            {
                response =
                    Convert.ToString(
                        Convert.ToDouble(
                            (response.IsNotNullOrEmpty()
                                                                ? response
                                                                : "0"),
                            System.Globalization.CultureInfo.InvariantCulture) +

                        Convert.ToDouble(
                            (otherValue.IsNotNullOrEmpty()
                                                                ? otherValue
                                                                : "0"),
                            System.Globalization.CultureInfo.InvariantCulture), System.Globalization.CultureInfo.InvariantCulture);
            }
            else if (valueStrategy.HasFlag(ValueStrategies.Merge))
            {
                if (response.Type == JTokenType.Array)
                {
                    if (otherValue.Type == JTokenType.Array)
                    {
                        ((JArray)otherValue).Children().ForEachElement(child => ((JArray)response).Add(child));
                    }
                    else if (otherValue.HasValues)
                    {
                        ((JArray)response).Add(otherValue);
                    }
                }
                else
                {
                    response = String.Concat(value, otherValue);
                }
            }

            return(response);
        }
コード例 #3
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="jObject"></param>
 /// <param name="property"></param>
 /// <param name="valueStrategy"></param>
 /// <param name="defaultValue"></param>
 public static void AddUpdate(this JObject jObject, JProperty property, ValueStrategies valueStrategy, JProperty defaultValue)
 {
     if (jObject.SelectToken(property.Name) != null)
     {
         if (!valueStrategy.HasFlag(ValueStrategies.PreserveOriginal))
         {
             var value = jObject.SelectToken(property.Name).Parent.As <JProperty>();
             value.Value =
                 JsonExtensions.ResolverValue(valueStrategy, property, value).Value;
         }
     }
     else
     {
         jObject.Add(JsonExtensions.ResolverValue(valueStrategy, property, defaultValue));
     }
 }
コード例 #4
0
 /// <summary>
 ///		Adds/Updates a <see cref="JProperty"/> contained in
 ///		the parameter <paramref name="jObject"/>.
 /// </summary>
 /// <param name="jObject">
 ///		A <see cref="JObject"/> instance to add/update.
 /// </param>
 /// <param name="name">
 ///		The name of the <see cref="JProperty"/> to add/update
 ///		to parameter <paramref name="jObject"/>.
 /// </param>
 /// <param name="value">
 ///		The value of the <see cref="JProperty"/> to add/update
 ///		to parameter <paramref name="jObject"/>.
 /// </param>
 /// <param name="valueStrategy">
 ///		The <see cref="ValueStrategies"/> to apply when adding/updating
 ///		a <see cref="JProperty"/> on parameter <paramref name="jObject"/>.
 /// </param>
 /// <param name="defaultValue">
 ///		A default value to be used in conjunction with the given <see cref="ValueStrategies"/>
 ///		when adding/updating parameter <paramref name="jObject"/>.
 /// </param>
 public static void AddUpdate(this JObject jObject, string name, string value, ValueStrategies valueStrategy, string defaultValue)
 {
     if (jObject.SelectToken(name) != null)
     {
         if (!valueStrategy.HasFlag(ValueStrategies.PreserveOriginal))
         {
             var innerValue = (string)jObject.SelectToken(name).Parent.As <JProperty>().Value;
             jObject.SelectToken(name)
             .Parent
             .As <JProperty>()
             .Value =
                 JsonExtensions
                 .ResolverValue(
                     valueStrategy,
                     value,
                     (valueStrategy == ValueStrategies.Force ? value : innerValue));
         }
     }
     else
     {
         jObject.Add(
             name,
             JsonExtensions
             .ResolverValue(
                 valueStrategy,
                 value,
                 defaultValue));
     }
 }