bla
This commit is contained in:
@@ -5,7 +5,7 @@ public class ContextualWidget :
|
|||||||
{
|
{
|
||||||
public IWidgetBuilder Create() =>
|
public IWidgetBuilder Create() =>
|
||||||
WidgetBuilder.Create()
|
WidgetBuilder.Create()
|
||||||
.Configuration<ContextualWidgetConfiguration>(args =>
|
.UseConfiguration<ContextualWidgetConfiguration>(args =>
|
||||||
{
|
{
|
||||||
args.Name = "Contextual commands";
|
args.Name = "Contextual commands";
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ public class MediaControllerWidget :
|
|||||||
{
|
{
|
||||||
public IWidgetBuilder Create() =>
|
public IWidgetBuilder Create() =>
|
||||||
WidgetBuilder.Create()
|
WidgetBuilder.Create()
|
||||||
.Configuration<MediaControllerWidgetConfiguration>(args =>
|
.UseConfiguration<MediaControllerWidgetConfiguration>(args =>
|
||||||
{
|
{
|
||||||
args.Name = "Media controller";
|
args.Name = "Media controller";
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ public class PrimaryWidget :
|
|||||||
{
|
{
|
||||||
public IWidgetBuilder Create() =>
|
public IWidgetBuilder Create() =>
|
||||||
WidgetBuilder.Create()
|
WidgetBuilder.Create()
|
||||||
.Configuration<PrimaryWidgetConfiguration>(args =>
|
.UseConfiguration<PrimaryWidgetConfiguration>(args =>
|
||||||
{
|
{
|
||||||
args.Name = "Primary commands";
|
args.Name = "Primary commands";
|
||||||
args.Commands =
|
args.Commands =
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ public interface IWidgetBuilder
|
|||||||
{
|
{
|
||||||
IWidgetHost Build();
|
IWidgetHost Build();
|
||||||
|
|
||||||
IWidgetBuilder Configuration<TConfiguration>(Action<TConfiguration> configurationDelegate)
|
IWidgetBuilder UseConfiguration<TConfiguration>(Action<TConfiguration> configurationDelegate)
|
||||||
where TConfiguration :
|
where TConfiguration :
|
||||||
WidgetConfiguration,
|
WidgetConfiguration,
|
||||||
new();
|
new();
|
||||||
|
|||||||
@@ -10,6 +10,10 @@ public class WidgetBuilder :
|
|||||||
{
|
{
|
||||||
private readonly IHostBuilder hostBuilder;
|
private readonly IHostBuilder hostBuilder;
|
||||||
|
|
||||||
|
private bool configurationRegistered;
|
||||||
|
|
||||||
|
private bool viewModelTemplateRegistered;
|
||||||
|
|
||||||
private WidgetBuilder()
|
private WidgetBuilder()
|
||||||
{
|
{
|
||||||
hostBuilder = new HostBuilder()
|
hostBuilder = new HostBuilder()
|
||||||
@@ -32,13 +36,25 @@ public class WidgetBuilder :
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static IWidgetBuilder Create() => new 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 :
|
where TConfiguration :
|
||||||
WidgetConfiguration,
|
WidgetConfiguration,
|
||||||
new()
|
new()
|
||||||
{
|
{
|
||||||
TConfiguration configuration = new TConfiguration();
|
if (configurationRegistered)
|
||||||
|
{
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
configurationRegistered = true;
|
||||||
|
|
||||||
|
TConfiguration configuration = new();
|
||||||
configurationDelegate(configuration);
|
configurationDelegate(configuration);
|
||||||
|
|
||||||
hostBuilder.ConfigureServices(services =>
|
hostBuilder.ConfigureServices(services =>
|
||||||
@@ -51,33 +67,23 @@ public class WidgetBuilder :
|
|||||||
return this;
|
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)
|
public IWidgetBuilder ConfigureServices(Action<IServiceCollection> configureDelegate)
|
||||||
{
|
{
|
||||||
hostBuilder.ConfigureServices(configureDelegate);
|
hostBuilder.ConfigureServices(configureDelegate);
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public IWidgetBuilder UseViewModel<TViewModel>()
|
public IWidgetBuilder UseViewModel<TViewModel>()
|
||||||
where TViewModel :
|
where TViewModel :
|
||||||
IWidgetViewModel
|
IWidgetViewModel
|
||||||
{
|
{
|
||||||
|
if (viewModelTemplateRegistered)
|
||||||
|
{
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
viewModelTemplateRegistered = true;
|
||||||
|
|
||||||
hostBuilder.ConfigureServices(services =>
|
hostBuilder.ConfigureServices(services =>
|
||||||
{
|
{
|
||||||
services.AddWidgetTemplate<TViewModel>();
|
services.AddWidgetTemplate<TViewModel>();
|
||||||
@@ -85,4 +91,23 @@ public class WidgetBuilder :
|
|||||||
|
|
||||||
return this;
|
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