Add foundation
This commit is contained in:
@@ -0,0 +1,25 @@
|
||||
namespace Toolkit.Foundation;
|
||||
|
||||
public class ConfigurationInitializer<TConfiguration>(IPublisher publisher,
|
||||
IConfigurationReader<TConfiguration> reader,
|
||||
IConfigurationWriter<TConfiguration> writer,
|
||||
IConfigurationFactory<TConfiguration> factory) :
|
||||
IConfigurationInitializer<TConfiguration>,
|
||||
IInitializer
|
||||
where TConfiguration :
|
||||
class
|
||||
{
|
||||
public async Task Initialize()
|
||||
{
|
||||
if (!reader.TryRead(out TConfiguration? configuration))
|
||||
{
|
||||
if (factory.Create() is object defaultConfiguration)
|
||||
{
|
||||
configuration = (TConfiguration?)defaultConfiguration;
|
||||
writer.Write(defaultConfiguration);
|
||||
}
|
||||
}
|
||||
|
||||
await publisher.PublishUI(new Changed<TConfiguration>(configuration));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user