public static float ConvertTo(this Unit from, Unit to, float value) { if (from == to) return value; if (from == Unit.Gram) return value / to.InGrams(); if (to == Unit.Gram) return value * from.InGrams(); var valueInGrams = from.ConvertTo(Unit.Gram, value); return Unit.Gram.ConvertTo(to, valueInGrams); }