using Microsoft.Extensions.DependencyInjection; namespace Hyperbar.Windows; public class TemplateFactory(IEnumerable descriptors, IServiceProvider provider) : ITemplateFactory { public object? Create(object key) { if (descriptors.FirstOrDefault(x => x.Key == key) is IContentTemplateDescriptor descriptor) { if (provider.GetRequiredKeyedService(descriptor.TemplateType, descriptor.Key) is { } template) { return template; } } return default; } }