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)); }
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); }