public NdConvertibleValue(UnitOfMeasurementConverters conversionDelegate, Enum sourceValueUnit, double[] valueToSet, double minimum = double.NegativeInfinity, double maximum = double.PositiveInfinity) { string sourceValueUnitName = null; sourceValueUnitName = sourceValueUnit.ToString(); Converters = conversionDelegate; _mMaxValue = maximum; _mMinValue = minimum; SetValue(sourceValueUnitName, valueToSet); InputUnit = sourceValueUnit; }
public void Populate(string unitOfMeasurementName, string[] units, double[] conversionFactors) { #region EvaluateBasicPopulationRules if (string.IsNullOrEmpty(unitOfMeasurementName)) { throw new Exception("Unit of measurement name must be set."); } if (units == null || conversionFactors == null) { throw new Exception("Either Units or ConversionFactors argument is not set."); } if (units.Length == 0 || conversionFactors.Length == 0) { throw new Exception("Units and ConversionFactors arguments must contain more than zero elements."); } if (units.Length != conversionFactors.Length) { throw new Exception("Units and ConversionFactors arguments must be the same length."); } if (conversionFactors[0] != 1D) { throw new Exception("First conversion factor for " + unitOfMeasurementName + " (" + units[0] + ") must be 1.0 and is " + conversionFactors[0] + "."); } #endregion var convertersForThisUnit = new UnitOfMeasurementConverters(); convertersForThisUnit.Name = unitOfMeasurementName; _mAgCollection.Add(unitOfMeasurementName, convertersForThisUnit); for (var index = 0; index < units.Length; index++) { var newNode = new NdUnitAgConversionData(); newNode.Name = units[index]; newNode.ConversionFactor = conversionFactors[index]; var conversionProvider = new NdDualConversionProvider(); conversionProvider.ConversionDataObject = newNode; convertersForThisUnit.Add(newNode.Name, conversionProvider); } }
public UnitOfMeasurementConverters CreateOrGetUnitConverter(string unitOfMeasurementName) { UnitOfMeasurementConverters result = null; if (!_mAgCollection.ContainsKey(unitOfMeasurementName)) { result = new UnitOfMeasurementConverters(); result.Name = unitOfMeasurementName; _mAgCollection.Add(unitOfMeasurementName, result); } else { result = _mAgCollection[unitOfMeasurementName]; } return(result); }
public static UnitOfMeasurementConverters GetConverterByName(string name) { UnitOfMeasurementConverters result = null; switch (name) { case "Distance": case "DistanceUnit": result = DistanceConverter; break; case "Pressure": case "PressureUnit": result = PressureConverter; break; case "Temperature": case "TempUnit": result = TemperatureConverter; break; case "Unitless": case "UnitlessUnit": result = UnitlessConverter; break; case "Time": case "TimeUnit": result = ManpowerTimeConverter; break; case "JulianTime": case "JulianTimeUnit": result = JulianTimeConverter; break; case "ElapsingTime": case "ElapsingTimeUnit": result = ElapsingTimeConverter; break; case "Energy": case "EnergyUnit": result = EnergyConverter; break; case "Volume": case "VolumeUnit": result = VolumeConverter; break; case "Density": case "DensityUnit": result = DensityConverter; break; case "AngleUnit": result = AngleConverter; break; case "Mass": result = MassConverter; break; case "SpecificEnergy": result = SpecificEnergyConverter; break; case "AreaUnit": result = AreaConverter; break; case "VolumetricFlow": result = VolumetricFlowConverter; break; default: throw new Exception("Converter name " + name + " unrecognized."); } return(result); }