/// <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))); }
/// <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()); }
public MeshManager(IObjectPublisher objectPublisher) { publisher = objectPublisher; Mesh = new Cell[Constants.WIDTH, Constants.HEIGHT]; }