Пример #1
0
        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;
        }
Пример #2
0
        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);
            }
        }
Пример #3
0
        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);
        }
Пример #4
0
        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);
        }