bla
This commit is contained in:
@@ -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 =
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user