예제 #1
0
    /// <summary>
    /// 异步设置对象状态。
    /// </summary>
    /// <param name="state">给定的 <see cref="IObjectState"/>。</param>
    /// <param name="newStatusFactory">给定的新对象状态工厂方法。</param>
    /// <param name="cancellationToken">给定的 <see cref="CancellationToken"/>(可选)。</param>
    /// <returns>返回一个包含状态(兼容不支持枚举类型的实体框架)的异步操作。</returns>
    public static async ValueTask <object> SetObjectStatusAsync(this IObjectState state,
                                                                Func <object, object> newStatusFactory, CancellationToken cancellationToken = default)
    {
        var currentStatus = await state.GetObjectStatusAsync(cancellationToken).DisableAwaitContext();

        return(await state.SetObjectStatusAsync(newStatusFactory(currentStatus), cancellationToken)
               .DisableAwaitContext());
    }
예제 #2
0
        public static async ValueTask <object> SetObjectStatusAsync(this IObjectState state,
                                                                    Func <object, object> newStatusFactory, CancellationToken cancellationToken = default)
        {
            state.NotNull(nameof(state));
            newStatusFactory.NotNull(nameof(newStatusFactory));

            var newStatus = await state.GetObjectStatusAsync(cancellationToken).ConfigureAwait();

            return(await state.SetObjectStatusAsync(newStatusFactory.Invoke(newStatus), cancellationToken)
                   .ConfigureAwait());
        }