/// <summary> /// Update parameter if it has been changed. /// </summary> /// <param name="solverSettings">Solver settings in which /// parameter value will be updated.</param> /// <param name="attribute">Network attribute, which parameter must be updated.</param> /// <param name="parameterName">Name of the parameter which must be updated.</param> /// <param name="parameterValue">Value, which must be set in parameter.</param> /// <exception cref="System.ArgumentException">Is thrown when there is no /// attribute with such parameter name in solver settings.</exception> private void _UpdateParameterIfNeeded(SolverSettings solverSettings, NetworkAttribute attribute, string parameterName, string parameterValue) { Debug.Assert(solverSettings != null); Debug.Assert(attribute != null); Debug.Assert(parameterName != null); // Get parameter. var parameter = attribute.Parameters.First(par => par.Name == parameterName); // Get current parameter value. object valueObj = null; if (!solverSettings.GetNetworkAttributeParameterValue(attribute.Name, parameterName, out valueObj)) throw new ArgumentException("parameterName"); string value = _ConvertValue2String(valueObj); // If value has changed - set new value. if (!value.Equals(parameterValue, StringComparison.OrdinalIgnoreCase)) { if (parameterValue != null) { try { solverSettings.SetNetworkAttributeParameterValue(attribute.Name, parameter.Name, parameterValue); } // Inputed value is in wrong format - do not change solver settings. catch { } } } }