private static decimal GetMultipler(MemoryUnits units) { decimal unitsMulitpler; if (UnitsMulitpler.TryGetValue(units, out unitsMulitpler)) { return(unitsMulitpler); } unitsMulitpler = 1 / Convert.ToDecimal((int)units); UnitsMulitpler.Add(units, unitsMulitpler); return(unitsMulitpler); }
private static string GetUnitString(MemoryUnits units) { string unitsString; if (UnitsAsString.TryGetValue(units, out unitsString)) { return(unitsString); } var memInfo = MemoryUnitsType.GetMember(units.ToString()); var attributes = memInfo[0].GetCustomAttributes(typeof(DescriptionAttribute), false); unitsString = ((DescriptionAttribute)attributes[0]).Description; UnitsAsString.Add(units, unitsString); return(unitsString); }
private static string GetUnitString(MemoryUnits units) { string unitsString; if (UnitsAsString.TryGetValue(units, out unitsString)) { return(unitsString); } string unitAsString; switch (units) { case MemoryUnits.Bytes: unitAsString = "Bytes"; break; case MemoryUnits.Kilo: unitAsString = "Kilo"; break; case MemoryUnits.Mega: unitAsString = "Mega"; break; case MemoryUnits.Giga: unitAsString = "Giga"; break; default: throw new ArgumentOutOfRangeException("units", @"Unknown units of memory!"); } var memInfo = MemoryUnitsType.GetMember(unitAsString); var attributes = memInfo[0].GetCustomAttributes(typeof(DescriptionAttribute), false); unitsString = ((DescriptionAttribute)attributes[0]).Description; UnitsAsString.Add(units, unitsString); return(unitsString); }
/// <summary> /// Приведение к человекочитабельному размеру файла /// </summary> /// <param name="sizeInBytes">Размер файла</param> /// <param name="sizeValue">Значение</param> /// <param name="sizeUnit">Единица измерения</param> public static void SizeInBytesToUserFriendlyFileSize(this long sizeInBytes, out double sizeValue, out MemoryUnits sizeUnit) { if (sizeInBytes == 0L) { sizeValue = 0.0; sizeUnit = MemoryUnits.Bytes; } else { sizeInBytes = Math.Abs(sizeInBytes); int num = Convert.ToInt32(Math.Floor(Math.Log(sizeInBytes, 1024.0))); sizeValue = Math.Round(sizeInBytes / Math.Pow(1024.0, num), 1); sizeValue = Math.Sign(sizeInBytes) * sizeValue; sizeUnit = (MemoryUnits)num; } }
private static string ValueAsString(Func <decimal> valueFunc, MemoryUnits units, int decimalPlaces) { return($"{decimal.Round(valueFunc()*GetMultipler(units), decimalPlaces):0.00} {GetUnitString(units)}"); }
private static string ValueAsString(Func <decimal> valueFunc, MemoryUnits units, int decimalPlaces) { return(string.Format("{0:0.00} {1}", decimal.Round(valueFunc() * GetMultipler(units), decimalPlaces), GetUnitString(units))); }
/// <summary> /// Конструктор /// </summary> /// <param name="sizeValue">Размер</param> /// <param name="sizeUnit">Единица измерения</param> public UserFriendlyFileSize(double sizeValue, MemoryUnits sizeUnit) { this = new UserFriendlyFileSize(); SizeValue = sizeValue; SizeUnit = sizeUnit; }