Add project files.

This commit is contained in:
dan_c
2024-01-04 17:32:36 +00:00
parent 6358cf9567
commit da8af59391
48 changed files with 1710 additions and 0 deletions
+27
View File
@@ -0,0 +1,27 @@
using Microsoft.Extensions.Hosting;
using System.Collections.ObjectModel;
namespace Hyperbar;
public class ObservableCollectionViewModel :
ObservableCollection<object>
{
}
public class AppService(IEnumerable<IInitializer> initializers) :
IHostedService
{
public async Task StartAsync(CancellationToken cancellationToken)
{
foreach (var initializer in initializers)
{
await initializer.InitializeAsync();
}
}
public Task StopAsync(CancellationToken cancellationToken)
{
throw new System.NotImplementedException();
}
}
+12
View File
@@ -0,0 +1,12 @@
namespace Hyperbar;
public record DataTemplateDescriptor :
IDataTemplateDescriptor
{
public required Type DataType { get; set; }
public required Type TemplateType { get; set; }
public required object Key { get; set; }
}
+10
View File
@@ -0,0 +1,10 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.Hosting" Version="8.0.0" />
</ItemGroup>
</Project>
+9
View File
@@ -0,0 +1,9 @@
namespace Hyperbar;
public interface IDataTemplateDescriptor
{
Type DataType { get; set; }
object Key { get; set; }
Type TemplateType { get; set; }
}
+11
View File
@@ -0,0 +1,11 @@
namespace Hyperbar;
public interface IInitializer
{
Task InitializeAsync();
}
public interface IDataTemplateSelector
{
}
+27
View File
@@ -0,0 +1,27 @@
using Microsoft.Extensions.DependencyInjection;
namespace Hyperbar;
public static class IServiceCollectionExtensions
{
public static IServiceCollection AddDataTemplate<TData, TTemplate>(this IServiceCollection services,
object? key = null)
{
Type dataType = typeof(TData);
Type templateType = typeof(TTemplate);
key ??= dataType.Name;
services.AddKeyedTransient(dataType, key);
services.AddKeyedTransient(templateType, key);
services.AddTransient<IDataTemplateDescriptor>(provider => new DataTemplateDescriptor
{
DataType = dataType,
TemplateType = templateType,
Key = key
});
return services;
}
}
+6
View File
@@ -0,0 +1,6 @@
namespace Hyperbar;
public interface ITemplateFactory
{
object? Create(object key);
}
+6
View File
@@ -0,0 +1,6 @@
namespace Hyperbar;
public interface ITemplatedViewModel
{
ITemplateFactory TemplateFactory { get; }
}