示例#1
0
    /// <summary>
    /// 设置对象创建者。
    /// </summary>
    /// <param name="publisher">给定的 <see cref="IObjectPublisher"/>。</param>
    /// <param name="newPublishedByFactory">给定的新对象创建者工厂方法。</param>
    /// <returns>返回创建者(兼容标识或字符串)。</returns>
    public static object?SetObjectPublishedBy(this IObjectPublisher publisher,
                                              Func <object?, object?> newPublishedByFactory)
    {
        publisher.SetObjectCreatedBy(newPublishedByFactory);

        var currentPublishedBy = publisher.GetObjectCreatedBy();

        return(publisher.SetObjectPublishedBy(newPublishedByFactory(currentPublishedBy)));
    }
示例#2
0
    /// <summary>
    /// 异步设置对象创建者。
    /// </summary>
    /// <param name="publisher">给定的 <see cref="IObjectPublisher"/>。</param>
    /// <param name="newPublishedByFactory">给定的新对象创建者工厂方法。</param>
    /// <param name="cancellationToken">给定的 <see cref="CancellationToken"/>(可选)。</param>
    /// <returns>返回一个包含创建者(兼容标识或字符串)的异步操作。</returns>
    public static async ValueTask <object?> SetObjectPublishedByAsync(this IObjectPublisher publisher,
                                                                      Func <object?, object?> newPublishedByFactory, CancellationToken cancellationToken = default)
    {
        await publisher.SetObjectCreatedByAsync(newPublishedByFactory, cancellationToken).DisableAwaitContext();

        var currentPublishedBy = await publisher.GetObjectPublishedByAsync(cancellationToken)
                                 .DisableAwaitContext();

        return(await publisher.SetObjectPublishedByAsync(newPublishedByFactory(currentPublishedBy), cancellationToken)
               .DisableAwaitContext());
    }
示例#3
0
 public MeshManager(IObjectPublisher objectPublisher)
 {
     publisher = objectPublisher;
     Mesh      = new Cell[Constants.WIDTH, Constants.HEIGHT];
 }