using System.Reflection; namespace Hyperbar.Widget; public class WidgetAssemblyHandler(IMediator mediator, IFactory factory) : INotificationHandler> { public Task Handle(Created notification, CancellationToken cancellationToken) { if (notification.Value?.GetTypes().FirstOrDefault(x => typeof(IWidget).IsAssignableFrom(x)) is Type widgetType) { if (factory.Create(widgetType) is IWidget widget) { mediator.PublishAsync(new Created(widget), cancellationToken); } } return Task.CompletedTask; } }