public static TUpdatedBy SetUpdatedBy <TUpdatedBy, TUpdatedTime>
     (this IUpdation <TUpdatedBy, TUpdatedTime> updation,
     Func <TUpdatedBy, TUpdatedBy> newUpdatedByFactory)
     where TUpdatedBy : IEquatable <TUpdatedBy>
     where TUpdatedTime : struct
 {
     updation.NotNull(nameof(updation));
     return(updation.UpdatedBy = newUpdatedByFactory.Invoke(updation.UpdatedBy));
 }
Exemple #2
0
        public static void ImportUpdation <TUpdatedBy, TUpdatedTime>(this IUpdation <TUpdatedBy, TUpdatedTime> updation,
                                                                     string by, string time, IFormatProvider provider = null)
            where TUpdatedBy : IEquatable <TUpdatedBy>
            where TUpdatedTime : struct
        {
            updation.ImportCreation(by, time, provider);

            updation.UpdatedBy   = by.ToCreatedBy <TUpdatedBy>(provider);
            updation.UpdatedTime = time.ToCreatedTime <TUpdatedTime>(provider);
        }
        public static IUpdation <TUpdatedBy> PopulateUpdation <TUpdatedBy>
            (this IUpdation <TUpdatedBy> updation, IClockService clock)
            where TUpdatedBy : IEquatable <TUpdatedBy>
        {
            updation.PopulateCreation(clock);

            updation.UpdatedTime      = updation.CreatedTime;
            updation.UpdatedTimeTicks = updation.CreatedTimeTicks;

            return(updation);
        }
        /// <summary>
        /// 异步获取更新者。
        /// </summary>
        /// <typeparam name="TUpdatedBy">指定的更新者类型。</typeparam>
        /// <typeparam name="TUpdatedTime">指定的更新时间类型(兼容 <see cref="DateTime"/> 或 <see cref="DateTimeOffset"/>)。</typeparam>
        /// <param name="updation">给定的 <see cref="IUpdation{TUpdatedBy, TUpdatedTime}"/>。</param>
        /// <param name="newUpdatedByFactory">给定的新更新者工厂方法。</param>
        /// <param name="cancellationToken">给定的 <see cref="CancellationToken"/>(可选)。</param>
        /// <returns>返回一个包含 <typeparamref name="TUpdatedBy"/>(兼容标识或字符串)的异步操作。</returns>
        public static ValueTask <TUpdatedBy> SetUpdatedByAsync <TUpdatedBy, TUpdatedTime>
            (this IUpdation <TUpdatedBy, TUpdatedTime> updation,
            Func <TUpdatedBy, TUpdatedBy> newUpdatedByFactory,
            CancellationToken cancellationToken = default)
            where TUpdatedBy : IEquatable <TUpdatedBy>
            where TUpdatedTime : struct
        {
            updation.NotNull(nameof(updation));

            return(cancellationToken.RunOrCancelValueAsync(()
                                                           => updation.UpdatedBy = newUpdatedByFactory.Invoke(updation.UpdatedBy)));
        }
    /// <summary>
    /// 填充创建属性。
    /// </summary>
    /// <typeparam name="TUpdatedBy">指定的创建者类型(提供对整数、字符串、GUID 等类型的支持)。</typeparam>
    /// <param name="updation">给定的 <see cref="IUpdation{TUpdatedBy}"/>。</param>
    /// <param name="newUpdatedBy">给定的新创建者。</param>
    /// <param name="newUpdatedTime">给定的新创建日期。</param>
    /// <returns>返回 <see cref="IUpdation{TUpdatedBy}"/>。</returns>
    public static IUpdation <TUpdatedBy> PopulateUpdation <TUpdatedBy>(this IUpdation <TUpdatedBy> updation,
                                                                       TUpdatedBy?newUpdatedBy, DateTimeOffset newUpdatedTime)
        where TUpdatedBy : IEquatable <TUpdatedBy>
    {
        updation.PopulateCreation <TUpdatedBy>(newUpdatedBy, newUpdatedTime);

        updation.UpdatedTime      = newUpdatedTime;
        updation.UpdatedTimeTicks = updation.UpdatedTime.Ticks;
        updation.UpdatedBy        = newUpdatedBy;

        return(updation);
    }
        public static async Task <IUpdation <TUpdatedBy> > PopulateUpdationAsync <TUpdatedBy>
            (this IUpdation <TUpdatedBy> updation, IClockService clock,
            CancellationToken cancellationToken = default)
            where TUpdatedBy : IEquatable <TUpdatedBy>
        {
            await updation.PopulateCreationAsync(clock, cancellationToken)
            .ConfigureAwait();

            updation.UpdatedTime      = updation.CreatedTime;
            updation.UpdatedTimeTicks = updation.CreatedTimeTicks;

            return(updation);
        }
    /// <summary>
    /// 异步填充创建属性。
    /// </summary>
    /// <typeparam name="TUpdatedBy">指定的创建者类型(提供对整数、字符串、GUID 等类型的支持)。</typeparam>
    /// <param name="updation">给定的 <see cref="IUpdation{TUpdatedBy}"/>。</param>
    /// <param name="newUpdatedBy">给定的新创建者。</param>
    /// <param name="newUpdatedTime">给定的新创建日期。</param>
    /// <param name="cancellationToken">给定的 <see cref="CancellationToken"/>(可选)。</param>
    /// <returns>返回一个包含 <see cref="IUpdation{TUpdatedBy}"/> 的异步操作。</returns>
    public static async Task <IUpdation <TUpdatedBy> > PopulateUpdationAsync <TUpdatedBy>(this IUpdation <TUpdatedBy> updation,
                                                                                          TUpdatedBy?newUpdatedBy, DateTimeOffset newUpdatedTime, CancellationToken cancellationToken = default)
        where TUpdatedBy : IEquatable <TUpdatedBy>
    {
        await updation.PopulateCreationAsync <TUpdatedBy>(newUpdatedBy, newUpdatedTime, cancellationToken)
        .DisableAwaitContext();

        updation.UpdatedTime      = newUpdatedTime;
        updation.UpdatedTimeTicks = updation.UpdatedTime.Ticks;
        updation.UpdatedBy        = newUpdatedBy;

        return(updation);
    }