/// <summary> /// 设置对象创建时间。 /// </summary> /// <param name="publicationTime">给定的 <see cref="IObjectPublicationTime"/>。</param> /// <param name="newPublishedTimeFactory">给定的新对象创建时间工厂方法。</param> /// <returns>返回创建时间(兼容 <see cref="DateTime"/> 或 <see cref="DateTimeOffset"/>)。</returns> public static object SetObjectPublishedTime(this IObjectPublicationTime publicationTime, Func <object, object> newPublishedTimeFactory) { publicationTime.SetObjectCreatedTime(newPublishedTimeFactory); var currentPublishedTime = publicationTime.GetObjectPublishedTime(); return(publicationTime.SetObjectPublishedTime(newPublishedTimeFactory(currentPublishedTime))); }
/// <summary> /// 异步设置对象创建时间。 /// </summary> /// <param name="publicationTime">给定的 <see cref="IObjectPublicationTime"/>。</param> /// <param name="newPublishedTimeFactory">给定的新对象创建时间工厂方法。</param> /// <param name="cancellationToken">给定的 <see cref="CancellationToken"/>(可选)。</param> /// <returns>返回一个包含创建时间(兼容 <see cref="DateTime"/> 或 <see cref="DateTimeOffset"/>)的异步操作。</returns> public static async ValueTask <object> SetObjectPublishedTimeAsync(this IObjectPublicationTime publicationTime, Func <object, object> newPublishedTimeFactory, CancellationToken cancellationToken = default) { await publicationTime.SetObjectCreatedTimeAsync(newPublishedTimeFactory, cancellationToken); var currentPublishedTime = await publicationTime.GetObjectPublishedTimeAsync(cancellationToken) .DisableAwaitContext(); return(await publicationTime.SetObjectPublishedTimeAsync(newPublishedTimeFactory(currentPublishedTime), cancellationToken) .DisableAwaitContext()); }