Ejemplo n.º 1
0
 /// <summary>
 /// Indicates whether the current object is equal to another object of the same type.
 /// </summary>
 /// <param name="other">An object to compare with this object.</param>
 /// <returns>
 /// true if the current object is equal to the <paramref name="other"/> parameter; otherwise, false.
 /// </returns>
 public bool Equals(OptimizationParameter other)
 {
     if (ReferenceEquals(null, other))
     {
         return(false);
     }
     if (ReferenceEquals(this, other))
     {
         return(true);
     }
     return(string.Equals(Name, other?.Name));
 }
Ejemplo n.º 2
0
        public override object ReadJson(
            JsonReader reader,
            Type objectType,
            object existingValue,
            JsonSerializer serializer
            )
        {
            JObject token         = JObject.Load(reader);
            var     parameterName = token.GetValue("name", StringComparison.OrdinalIgnoreCase)?.Value <string>();

            if (string.IsNullOrEmpty(parameterName))
            {
                throw new ArgumentException("Optimization parameter name is not specified.");
            }

            JToken value;
            JToken minToken;
            JToken maxToken;
            OptimizationParameter optimizationParameter = null;

            if (token.TryGetValue("value", StringComparison.OrdinalIgnoreCase, out value))
            {
                optimizationParameter = new StaticOptimizationParameter(parameterName, value.Value <string>());
            }
            else if (token.TryGetValue("min", StringComparison.OrdinalIgnoreCase, out minToken) &&
                     token.TryGetValue("max", StringComparison.OrdinalIgnoreCase, out maxToken))
            {
                var stepToken    = token.GetValue("step", StringComparison.OrdinalIgnoreCase)?.Value <decimal>();
                var minStepToken = token.GetValue("min-step", StringComparison.OrdinalIgnoreCase)?.Value <decimal>();
                if (stepToken.HasValue)
                {
                    if (minStepToken.HasValue)
                    {
                        optimizationParameter = new OptimizationStepParameter(parameterName,
                                                                              minToken.Value <decimal>(),
                                                                              maxToken.Value <decimal>(),
                                                                              stepToken.Value,
                                                                              minStepToken.Value);
                    }
                    else
                    {
                        optimizationParameter = new OptimizationStepParameter(parameterName,
                                                                              minToken.Value <decimal>(),
                                                                              maxToken.Value <decimal>(),
                                                                              stepToken.Value);
                    }
                }
                else
                {
                    optimizationParameter = new OptimizationStepParameter(parameterName,
                                                                          minToken.Value <decimal>(),
                                                                          maxToken.Value <decimal>());
                }
            }

            if (optimizationParameter == null)
            {
                throw new ArgumentException(
                          "Optimization parameter are not currently supported.");
            }

            return(optimizationParameter);
        }