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