This commit is contained in:
TheXamlGuy
2024-01-30 22:34:49 +00:00
parent 858a23c28d
commit a2a5591502
5 changed files with 50 additions and 25 deletions
@@ -5,7 +5,7 @@ public class ContextualWidget :
{
public IWidgetBuilder Create() =>
WidgetBuilder.Create()
.Configuration<ContextualWidgetConfiguration>(args =>
.UseConfiguration<ContextualWidgetConfiguration>(args =>
{
args.Name = "Contextual commands";
@@ -8,7 +8,7 @@ public class MediaControllerWidget :
{
public IWidgetBuilder Create() =>
WidgetBuilder.Create()
.Configuration<MediaControllerWidgetConfiguration>(args =>
.UseConfiguration<MediaControllerWidgetConfiguration>(args =>
{
args.Name = "Media controller";
})
@@ -8,7 +8,7 @@ public class PrimaryWidget :
{
public IWidgetBuilder Create() =>
WidgetBuilder.Create()
.Configuration<PrimaryWidgetConfiguration>(args =>
.UseConfiguration<PrimaryWidgetConfiguration>(args =>
{
args.Name = "Primary commands";
args.Commands =
+1 -1
View File
@@ -6,7 +6,7 @@ public interface IWidgetBuilder
{
IWidgetHost Build();
IWidgetBuilder Configuration<TConfiguration>(Action<TConfiguration> configurationDelegate)
IWidgetBuilder UseConfiguration<TConfiguration>(Action<TConfiguration> configurationDelegate)
where TConfiguration :
WidgetConfiguration,
new();
+44 -19
View File
@@ -10,6 +10,10 @@ public class WidgetBuilder :
{
private readonly IHostBuilder hostBuilder;
private bool configurationRegistered;
private bool viewModelTemplateRegistered;
private WidgetBuilder()
{
hostBuilder = new HostBuilder()
@@ -32,13 +36,25 @@ public class WidgetBuilder :
}
public static IWidgetBuilder Create() => new WidgetBuilder();
public IWidgetHost Build()
{
IHost host = hostBuilder.Build();
return host.Services.GetRequiredService<IWidgetHost>();
}
public IWidgetBuilder Configuration<TConfiguration>(Action<TConfiguration> configurationDelegate)
public IWidgetBuilder UseConfiguration<TConfiguration>(Action<TConfiguration> configurationDelegate)
where TConfiguration :
WidgetConfiguration,
new()
{
TConfiguration configuration = new TConfiguration();
if (configurationRegistered)
{
return this;
}
configurationRegistered = true;
TConfiguration configuration = new();
configurationDelegate(configuration);
hostBuilder.ConfigureServices(services =>
@@ -51,23 +67,6 @@ public class WidgetBuilder :
return this;
}
public IWidgetBuilder UseViewModelTemplate<TWidgetContent, TWidgetTemplate>()
where TWidgetContent :
IWidgetViewModel
{
hostBuilder.ConfigureServices(services =>
{
services.AddWidgetTemplate<TWidgetContent, TWidgetTemplate>();
});
return this;
}
public IWidgetHost Build()
{
IHost host = hostBuilder.Build();
return host.Services.GetRequiredService<IWidgetHost>();
}
public IWidgetBuilder ConfigureServices(Action<IServiceCollection> configureDelegate)
{
hostBuilder.ConfigureServices(configureDelegate);
@@ -78,6 +77,13 @@ public class WidgetBuilder :
where TViewModel :
IWidgetViewModel
{
if (viewModelTemplateRegistered)
{
return this;
}
viewModelTemplateRegistered = true;
hostBuilder.ConfigureServices(services =>
{
services.AddWidgetTemplate<TViewModel>();
@@ -85,4 +91,23 @@ public class WidgetBuilder :
return this;
}
public IWidgetBuilder UseViewModelTemplate<TWidgetContent, TWidgetTemplate>()
where TWidgetContent :
IWidgetViewModel
{
if (viewModelTemplateRegistered)
{
return this;
}
viewModelTemplateRegistered = true;
hostBuilder.ConfigureServices(services =>
{
services.AddWidgetTemplate<TWidgetContent, TWidgetTemplate>();
});
return this;
}
}