/// <summary>
 /// 获取标识生成器。
 /// </summary>
 /// <typeparam name="TId">指定的标识类型。</typeparam>
 /// <param name="factory">给定的 <see cref="IIdGeneratorFactory"/>。</param>
 /// <param name="generatorType">给定的标识生成器类型。</param>
 /// <param name="aliase">给定的别名(可选)。</param>
 /// <returns>返回 <see cref="IIdGenerator{TId}"/>。</returns>
 public static IIdGenerator <TId> GetIdGenerator <TId>(this IIdGeneratorFactory factory,
                                                       Type generatorType, string?aliase = null)
     where TId : IEquatable <TId>
 => factory.GetIdGenerator <TId>(new TypeNamedKey(generatorType, aliase));
 /// <summary>
 /// 获取雪花 64 位整型标识生成器(可生成长度 18 位的长整数标识)。
 /// </summary>
 /// <param name="factory">给定的 <see cref="IIdGeneratorFactory"/>。</param>
 /// <returns>返回 <see cref="IIdGenerator{Int64}"/>。</returns>
 public static IIdGenerator <long> GetSnowflakeIdGenerator(this IIdGeneratorFactory factory)
 => factory.GetIdGenerator <long>(typeof(SnowflakeIdGenerator));
 /// <summary>
 /// 获取 MongoDB 字符串型标识生成器(可生成长度 24 位且包含数字、字母的字符串标识)。
 /// </summary>
 /// <param name="factory">给定的 <see cref="IIdGeneratorFactory"/>。</param>
 /// <returns>返回 <see cref="IIdGenerator{String}"/>。</returns>
 public static IIdGenerator <string> GetMongoIdGenerator(this IIdGeneratorFactory factory)
 => factory.GetIdGenerator <string>(typeof(MongoIdGenerator));
 /// <summary>
 /// 获取 COMB <see cref="Guid"/> 格式的雪花标识生成器。
 /// </summary>
 /// <param name="factory">给定的 <see cref="IIdGeneratorFactory"/>。</param>
 /// <returns>返回 <see cref="IIdGenerator{Guid}"/>。</returns>
 public static IIdGenerator <Guid> GetCombSnowflakeIdGenerator(this IIdGeneratorFactory factory)
 => factory.GetIdGenerator <Guid>(typeof(CombSnowflakeIdGenerator));
    => factory.GetCombIdGeneratorForMySql();     // 使用与 MySQL 数据库相同的排序方式

    /// <summary>
    /// 获取支持 SQL Server 排序类型的 COMB 标识生成器(uniqueidentifier)。
    /// </summary>
    /// <param name="factory">给定的 <see cref="IIdGeneratorFactory"/>。</param>
    /// <returns>返回 <see cref="IIdGenerator{Guid}"/>。</returns>
    public static IIdGenerator <Guid> GetCombIdGeneratorForSqlServer(this IIdGeneratorFactory factory)
    => factory.GetIdGenerator <Guid>(typeof(CombIdGenerator), nameof(CombIdGenerators.ForSqlServer));
 /// <summary>
 /// 获取支持 Oracle 排序类型的 COMB 标识生成器(raw(16))。
 /// </summary>
 /// <param name="factory">给定的 <see cref="IIdGeneratorFactory"/>。</param>
 /// <returns>返回 <see cref="IIdGenerator{Guid}"/>。</returns>
 public static IIdGenerator <Guid> GetCombIdGeneratorForOracle(this IIdGeneratorFactory factory)
 => factory.GetIdGenerator <Guid>(typeof(CombIdGenerator), nameof(CombIdGenerators.ForOracle));