using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection.Extensions; using Microsoft.Extensions.Hosting; using Toolkit.Framework.Foundation; namespace Toolkit.Framework.Avalonia; public static class IHostBuilderExtensions { public static IHostBuilder ConfigureTemplates(this IHostBuilder hostBuilder, Action builderDelegate) { hostBuilder.ConfigureServices((hostBuilderContext, serviceCollection) => { ContentTemplateBuilder? builder = new(); builderDelegate?.Invoke(builder); serviceCollection.TryAddSingleton(builder.Descriptors); serviceCollection.TryAddSingleton(); serviceCollection.TryAddSingleton(); serviceCollection.TryAddSingleton(); serviceCollection.TryAddSingleton(); serviceCollection.TryAddSingleton(); serviceCollection.TryAddSingleton(); foreach (IContentTemplateDescriptor? descriptor in builder.Descriptors) { serviceCollection.Add(new ServiceDescriptor(descriptor.TemplateType, descriptor.TemplateType, descriptor.Lifetime)); serviceCollection.Add(new ServiceDescriptor(descriptor.ContentType, descriptor.ContentType, descriptor.Lifetime)); } }); return hostBuilder; } }