Thread safely ObservableCollection

This commit is contained in:
Dan Clark
2024-12-02 09:17:38 +00:00
parent fd1b7525d3
commit 1ac2db25e0
6 changed files with 114 additions and 57 deletions
+26
View File
@@ -0,0 +1,26 @@
using Microsoft.Extensions.DependencyInjection;
namespace Toolkit.Foundation;
public class ServiceScopeFactory<TService>(IServiceScopeFactory serviceScopeFactory,
ICache<TService, IServiceScope> cache) :
IServiceScopeFactory<TService>
where TService : notnull
{
public (IServiceScope, TService) Create(params object?[] parameters)
{
if (serviceScopeFactory.CreateScope() is IServiceScope serviceScope)
{
if (serviceScope.ServiceProvider.GetService<IServiceFactory>() is IServiceFactory factory)
{
if (factory.Create<TService>(parameters) is TService service)
{
cache.Add(service, serviceScope);
return (serviceScope, service);
}
}
}
return default;
}
}