This commit is contained in:
TheXamlGuy
2024-02-01 22:13:45 +00:00
parent 6dbe2db584
commit 4edb0a7eb5
21 changed files with 126 additions and 85 deletions
+8 -8
View File
@@ -25,13 +25,18 @@ public class WidgetBuilder :
})
.ConfigureServices((context, services) =>
{
services.AddHostedService<WidgetService>();
services.AddSingleton<IWidgetHost, WidgetHost>();
services.AddScoped<IServiceFactory>(provider =>
new ServiceFactory((type, parameters) =>
ActivatorUtilities.CreateInstance(provider, type, parameters!)));
services.AddScoped<IMediator, Mediator>();
services.AddScoped<IDisposer, Disposer>();
services.AddSingleton<IValue<WidgetAvailability>, Value<WidgetAvailability>>();
services.AddHandler<WidgetAvailabilityChangedHandler>();
services.AddValueChangedNotification<WidgetConfiguration,
WidgetAvailability>((config) => (args) =>
{
args.Value = config.IsEnabled;
});
});
}
@@ -40,9 +45,7 @@ public class WidgetBuilder :
public IWidgetHost Build()
{
IHost host = hostBuilder.Build();
return (IWidgetHost)ActivatorUtilities.CreateInstance(host.Services,
typeof(WidgetHost), host);
return host.Services.GetRequiredService<IWidgetHost>();
}
public IWidgetBuilder UseConfiguration<TConfiguration>(Action<TConfiguration> configurationDelegate)
@@ -56,7 +59,6 @@ public class WidgetBuilder :
}
configurationRegistered = true;
TConfiguration configuration = new();
configurationDelegate(configuration);
@@ -88,7 +90,6 @@ public class WidgetBuilder :
}
viewModelTemplateRegistered = true;
hostBuilder.ConfigureServices(services =>
{
services.AddWidgetTemplate<TViewModel>();
@@ -107,7 +108,6 @@ public class WidgetBuilder :
}
viewModelTemplateRegistered = true;
hostBuilder.ConfigureServices(services =>
{
services.AddWidgetTemplate<TWidgetContent, TWidgetTemplate>();