Ejemplo n.º 1
0
    /// <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)));
    }
Ejemplo n.º 2
0
    /// <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());
    }