예제 #1
0
 /// <summary>
 /// 构造一个 <see cref="FileSizeDescriptor"/>。
 /// </summary>
 /// <param name="description">给定的描述。</param>
 /// <param name="name">给定的名称。</param>
 /// <param name="abbrName">给定的简称。</param>
 /// <param name="system">给定的进制。</param>
 /// <param name="size">给定的进制大小。</param>
 public FileSizeDescriptor(string description, string name,
                           string abbrName, FileSizeSystem system, BigInteger size)
 {
     Description = description;
     Name        = name;
     AbbrName    = abbrName;
     System      = system;
     Size        = size;
 }
예제 #2
0
 /// <summary>
 /// 构造一个 <see cref="FileSizeDescriptionAttribute"/>。
 /// </summary>
 /// <param name="description">给定的描述(如:千字节)。</param>
 /// <param name="name">给定的名称(如:KibiByte/KiloByte)。</param>
 /// <param name="abbrName">给定的简称(如:KiB/KB)。</param>
 /// <param name="system">给定的进制(如:二进制/十进制)。</param>
 /// <param name="exponent">给定的进制大小指数(用于幂运算)。</param>
 public FileSizeDescriptionAttribute(string description,
                                     string name, string abbrName, FileSizeSystem system, int exponent)
 {
     Description = description;
     Name        = name;
     AbbrName    = abbrName;
     System      = system;
     BaseNumber  = (int)system;
     Exponent    = exponent;
 }
    /// <summary>
    /// 将文件大小格式化为带自适应单位的字符串。
    /// </summary>
    /// <param name="fileSize">给定的文件大小。</param>
    /// <param name="system">给定的 <see cref="FileSizeSystem"/>。</param>
    /// <returns>返回格式化字符串。</returns>
    public static string FormatSizeStringWithAdaptionUnit(this BigInteger fileSize, FileSizeSystem system)
    {
        foreach (var descr in _reverseUnitDescriptors.Where(p => p.System == system))
        {
            if (fileSize >= descr.Size)
            {
                return(descr.FormatSizeString(fileSize));
            }
        }

        return(fileSize.ToString());
    }
    /// <summary>
    /// 将文件大小格式化为带单位的字符串。
    /// </summary>
    /// <param name="fileSize">给定的文件大小。</param>
    /// <param name="system">给定的 <see cref="FileSizeSystem"/>。</param>
    /// <param name="unit">给定的 <see cref="FileSizeUnit"/>。</param>
    /// <returns>返回格式化字符串。</returns>
    public static string FormatSizeStringWithUnit(this BigInteger fileSize, FileSizeSystem system, FileSizeUnit unit)
    {
        if (UnitDescriptors.TryGetValue(unit, out var descriptions))
        {
            var descr = descriptions.FirstOrDefault(s => s.System == system);
            if (descr is null)
            {
                throw new ArgumentException($"Unsupported file size system '{system}'.");
            }

            return(descr.FormatSizeString(fileSize));
        }

        return(fileSize.ToString());
    }
 /// <summary>
 /// 将文件大小格式化为带单位的字符串。
 /// </summary>
 /// <param name="fileSize">给定的文件大小。</param>
 /// <param name="system">给定的 <see cref="FileSizeSystem"/>。</param>
 /// <param name="unit">给定的 <see cref="FileSizeUnit"/>。</param>
 /// <returns>返回格式化字符串。</returns>
 public static string FormatSizeStringWithUnit(this long fileSize, FileSizeSystem system, FileSizeUnit unit)
 => new BigInteger(fileSize).FormatSizeStringWithUnit(system, unit);
 /// <summary>
 /// 将文件大小格式化为带自适应单位的字符串。
 /// </summary>
 /// <param name="fileSize">给定的文件大小。</param>
 /// <param name="system">给定的 <see cref="FileSizeSystem"/>。</param>
 /// <returns>返回格式化字符串。</returns>
 public static string FormatSizeStringWithAdaptionUnit(this long fileSize, FileSizeSystem system)
 => new BigInteger(fileSize).FormatSizeStringWithAdaptionUnit(system);