Improve widget builder
This commit is contained in:
@@ -30,12 +30,24 @@ public static class IServiceCollectionExtensions
|
||||
}
|
||||
|
||||
public static IServiceCollection AddConfiguration<TConfiguration>(this IServiceCollection services)
|
||||
where TConfiguration :
|
||||
where TConfiguration :
|
||||
class, new()
|
||||
{
|
||||
return services.AddConfiguration<TConfiguration>(typeof(TConfiguration).Name, "Settings.json", null);
|
||||
}
|
||||
|
||||
public static IServiceCollection AddConfiguration<TConfiguration>(this IServiceCollection services,
|
||||
Action<TConfiguration> configurationDelegate)
|
||||
where TConfiguration :
|
||||
class, new()
|
||||
{
|
||||
TConfiguration configuration = new();
|
||||
configurationDelegate.Invoke(configuration);
|
||||
|
||||
return services.AddConfiguration<TConfiguration>(typeof(TConfiguration).Name, "Settings.json",
|
||||
configuration);
|
||||
}
|
||||
|
||||
public static IServiceCollection AddConfiguration<TConfiguration>(this IServiceCollection services,
|
||||
TConfiguration? defaults = null)
|
||||
where TConfiguration :
|
||||
|
||||
@@ -8,6 +8,7 @@ public partial class WidgetContainerViewModel(ITemplateFactory templateFactory,
|
||||
IMediator mediator,
|
||||
IDisposer disposer,
|
||||
IEnumerable<IWidgetViewModel> items,
|
||||
Guid id,
|
||||
bool alternate) :
|
||||
ObservableCollectionViewModel<IWidgetViewModel>(serviceFactory, mediator, disposer, items),
|
||||
ITemplatedViewModel
|
||||
@@ -15,5 +16,8 @@ public partial class WidgetContainerViewModel(ITemplateFactory templateFactory,
|
||||
[ObservableProperty]
|
||||
private bool alternate = alternate;
|
||||
|
||||
[ObservableProperty]
|
||||
private Guid id = id;
|
||||
|
||||
public ITemplateFactory TemplateFactory => templateFactory;
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
namespace Hyperbar;
|
||||
|
||||
public interface IWidget
|
||||
{
|
||||
Guid Id { get; set; }
|
||||
|
||||
string? Name { get; set; }
|
||||
|
||||
string? Description { get; set; }
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
|
||||
namespace Hyperbar;
|
||||
|
||||
public interface IWidgetBuilder
|
||||
{
|
||||
void Create(IServiceCollection services);
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Hosting;
|
||||
|
||||
namespace Hyperbar;
|
||||
|
||||
public interface IWidgetProvider
|
||||
{
|
||||
void Create(HostBuilderContext context, IServiceCollection services);
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
namespace Hyperbar;
|
||||
|
||||
public class Widget :
|
||||
IWidget
|
||||
{
|
||||
public Guid Id { get; set; } = Guid.NewGuid();
|
||||
|
||||
public string? Name { get; set; }
|
||||
|
||||
public string? Description { get; set; }
|
||||
}
|
||||
@@ -1,10 +1,15 @@
|
||||
namespace Hyperbar;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
|
||||
public sealed class WidgetConfiguration
|
||||
namespace Hyperbar;
|
||||
|
||||
public class WidgetBuilder
|
||||
{
|
||||
public required Guid Id { get; set; }
|
||||
public static void Config(IServiceCollection services,
|
||||
Action<IWidget> widgetDelegate)
|
||||
{
|
||||
Widget widget = new();
|
||||
widgetDelegate(widget);
|
||||
|
||||
public required string Name { get; set; }
|
||||
|
||||
public required string Description { get; set; }
|
||||
}
|
||||
services.AddSingleton(widget);
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,13 @@
|
||||
namespace Hyperbar;
|
||||
|
||||
namespace Hyperbar;
|
||||
|
||||
public sealed class WidgetContext(IServiceProvider serviceProvider)
|
||||
public class WidgetContext(IServiceProvider serviceProvider) :
|
||||
IInitializer
|
||||
{
|
||||
public IServiceProvider ServiceProvider => serviceProvider;
|
||||
|
||||
public Task InitializeAsync()
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user