public static bool TryParse(string unitName, out Unit result) { unitName = unitName.ToLower(); result = __allUnits.SingleOrDefault( unit => unit.Names.Any( name => unitName.Equals(name.Name, StringComparison.Ordinal) || unitName.Equals(name.Name + "s", StringComparison.Ordinal) || unitName.Equals(name.Symbol, StringComparison.Ordinal) )); if (result == null) return false; return true; }
private static Unit GetCached( IEnumerable<KeyValuePair<BaseUnit,int>> exponents) { var found = __cachedUnits.FirstOrDefault( unit => unit._baseUnitExponents.All( exponent => exponents.Any( exponent1 => exponent.Key == exponent1.Key) || exponent.Value == 0) && exponents.All( exponent => unit[exponent.Key] == exponent.Value)); if (found != null) return found; var newUnit = new Unit(); foreach (var exponent in exponents) newUnit[exponent.Key] = exponent.Value; return newUnit; }
public static Unit AddName(Unit unit, string name, string symbol, params string[] quantityNames) { unit._names.Add(new UnitName(name, symbol, quantityNames)); return unit; }
public UnitsOfMeasurementMismatchException(Unit unitA, Unit unitB) : base(string.Format("Units of measurement mismatch: {0} and {1}.", unitA, unitB)) { }
public MeasuredVector3(Vector3 vector, Unit unit) { _value = vector; _unit = unit; }
private static void CheckUnitsMatch(Unit unitA, Unit unitB) { if(unitA != unitB) throw new UnitsOfMeasurementMismatchException(unitA, unitB); }
public MeasuredVector3 In(Unit unit) { CheckUnitsMatch(_unit, unit); return this; }