Ejemplo n.º 1
0
        /// <summary>
        /// 异步设置父标识。
        /// </summary>
        /// <typeparam name="TParentId">指定的父标识类型(兼容各种引用与值类型标识)。</typeparam>
        /// <param name="parentIdentifier">给定的 <see cref="IParentIdentifier{TId}"/>。</param>
        /// <param name="newParentIdFactory">给定的新 <typeparamref name="TParentId"/> 工厂方法。</param>
        /// <param name="cancellationToken">给定的 <see cref="CancellationToken"/>(可选)。</param>
        /// <returns>返回一个包含 <typeparamref name="TParentId"/> (兼容各种引用与值类型标识)的异步操作。</returns>
        public static ValueTask <TParentId> SetParentIdAsync <TParentId>(this IParentIdentifier <TParentId> parentIdentifier,
                                                                         Func <TParentId, TParentId> newParentIdFactory, CancellationToken cancellationToken = default)
            where TParentId : IEquatable <TParentId>
        {
            parentIdentifier.NotNull(nameof(parentIdentifier));
            newParentIdFactory.NotNull(nameof(newParentIdFactory));

            return(cancellationToken.RunOrCancelValueAsync(()
                                                           => parentIdentifier.ParentId = newParentIdFactory.Invoke(parentIdentifier.ParentId)));
        }
 /// <summary>
 /// 异步设置父标识。
 /// </summary>
 /// <typeparam name="TId">指定的标识类型(兼容各种引用与值类型标识)。</typeparam>
 /// <param name="parentIdentifier">给定的 <see cref="IParentIdentifier{TId}"/>。</param>
 /// <param name="newParentIdFactory">给定的新 <typeparamref name="TId"/> 工厂方法。</param>
 /// <param name="cancellationToken">给定的 <see cref="CancellationToken"/>(可选)。</param>
 /// <returns>返回一个包含 <typeparamref name="TId"/> (兼容各种引用与值类型标识)的异步操作。</returns>
 public static ValueTask <TId?> SetParentIdAsync <TId>(this IParentIdentifier <TId> parentIdentifier,
                                                       Func <TId?, TId?> newParentIdFactory, CancellationToken cancellationToken = default)
     where TId : IEquatable <TId>
 => cancellationToken.RunValueTask(() => parentIdentifier.ParentId = newParentIdFactory(parentIdentifier.ParentId));