code sweep

This commit is contained in:
Daniel Clark
2022-12-10 16:11:07 +00:00
parent 4f243eba2e
commit 0da4a37173
84 changed files with 2040 additions and 2104 deletions
@@ -1,7 +1,6 @@
namespace Toolkit.Foundation
namespace Toolkit.Framework.Foundation;
public interface INamedDataTemplateFactory
{
public interface INamedDataTemplateFactory
{
object? Create(string name, params object[] parameters);
}
}
object? Create(string name, params object[] parameters);
}
@@ -1,7 +1,6 @@
namespace Toolkit.Foundation
namespace Toolkit.Framework.Foundation;
public interface INamedTemplateFactory
{
public interface INamedTemplateFactory
{
object? Create(string name);
}
}
object? Create(string name);
}
@@ -1,13 +1,12 @@
using Microsoft.Extensions.DependencyInjection;
namespace Toolkit.Foundation
namespace Toolkit.Framework.Foundation;
public interface ITemplateBuilder
{
public interface ITemplateBuilder
{
IReadOnlyCollection<ITemplateDescriptor> Descriptors { get; }
IReadOnlyCollection<ITemplateDescriptor> Descriptors { get; }
ITemplateBuilder Add<TViewModel, TView>(string name, ServiceLifetime lifetime = ServiceLifetime.Transient);
ITemplateBuilder Add<TViewModel, TView>(string name, ServiceLifetime lifetime = ServiceLifetime.Transient);
ITemplateBuilder Add<TViewModel, TView>(ServiceLifetime lifetime = ServiceLifetime.Transient);
}
}
ITemplateBuilder Add<TViewModel, TView>(ServiceLifetime lifetime = ServiceLifetime.Transient);
}
@@ -1,15 +1,14 @@
using Microsoft.Extensions.DependencyInjection;
namespace Toolkit.Foundation
namespace Toolkit.Framework.Foundation;
public interface ITemplateDescriptor
{
public interface ITemplateDescriptor
{
Type ContentType { get; }
Type ContentType { get; }
ServiceLifetime Lifetime { get; }
ServiceLifetime Lifetime { get; }
string? Name { get; }
string? Name { get; }
Type TemplateType { get; }
}
}
Type TemplateType { get; }
}
@@ -1,12 +1,10 @@
namespace Toolkit.Foundation
namespace Toolkit.Framework.Foundation;
public interface ITemplateDescriptorProvider
{
ITemplateDescriptor? Get(string name);
public interface ITemplateDescriptorProvider
{
ITemplateDescriptor? Get(string name);
ITemplateDescriptor? Get(Type type);
ITemplateDescriptor? Get(Type type);
ITemplateDescriptor? Get<T>();
}
}
ITemplateDescriptor? Get<T>();
}
@@ -1,9 +1,8 @@
using System.Diagnostics.CodeAnalysis;
namespace Toolkit.Foundation
namespace Toolkit.Framework.Foundation;
public interface ITemplateFactory
{
public interface ITemplateFactory
{
object? Create([MaybeNull] object? data);
}
}
object? Create([MaybeNull] object? data);
}
@@ -1,6 +1,5 @@
namespace Toolkit.Foundation
namespace Toolkit.Framework.Foundation;
public interface ITemplateSelector
{
public interface ITemplateSelector
{
}
}
}
@@ -1,7 +1,6 @@
namespace Toolkit.Foundation
namespace Toolkit.Framework.Foundation;
public interface ITypedDataTemplateFactory
{
public interface ITypedDataTemplateFactory
{
object? Create(Type type, params object[] parameters);
}
}
object? Create(Type type, params object[] parameters);
}
@@ -1,36 +1,35 @@
namespace Toolkit.Foundation
namespace Toolkit.Framework.Foundation;
public class NamedDataTemplateFactory : INamedDataTemplateFactory
{
public class NamedDataTemplateFactory : INamedDataTemplateFactory
private readonly Dictionary<string, object> cache = new();
private readonly IReadOnlyCollection<ITemplateDescriptor> descriptors;
private readonly IServiceFactory serviceFactory;
public NamedDataTemplateFactory(IReadOnlyCollection<ITemplateDescriptor> descriptors,
IServiceFactory serviceFactory)
{
private readonly Dictionary<string, object> cache = new();
this.descriptors = descriptors;
this.serviceFactory = serviceFactory;
}
private readonly IReadOnlyCollection<ITemplateDescriptor> descriptors;
private readonly IServiceFactory serviceFactory;
public NamedDataTemplateFactory(IReadOnlyCollection<ITemplateDescriptor> descriptors,
IServiceFactory serviceFactory)
public virtual object? Create(string name, params object[] parameters)
{
if (cache.TryGetValue(name, out object? data))
{
this.descriptors = descriptors;
this.serviceFactory = serviceFactory;
}
public virtual object? Create(string name, params object[] parameters)
{
if (cache.TryGetValue(name, out object? data))
{
return data;
}
if (descriptors.FirstOrDefault(x => x.Name == name) is ITemplateDescriptor descriptor)
{
data = parameters is { Length: > 0 } ? serviceFactory.Create<object>(descriptor.ContentType, parameters) : serviceFactory.Create(descriptor.ContentType);
if (data is ICache cache)
{
this.cache[name] = cache;
}
}
return data;
}
if (descriptors.FirstOrDefault(x => x.Name == name) is ITemplateDescriptor descriptor)
{
data = parameters is { Length: > 0 } ? serviceFactory.Create<object>(descriptor.ContentType, parameters) : serviceFactory.Create(descriptor.ContentType);
if (data is ICache cache)
{
this.cache[name] = cache;
}
}
return data;
}
}
}
@@ -1,41 +1,40 @@
namespace Toolkit.Foundation
namespace Toolkit.Framework.Foundation;
public class NamedTemplateFactory : INamedTemplateFactory
{
public class NamedTemplateFactory : INamedTemplateFactory
private readonly Dictionary<string, object> cache = new();
private readonly ITemplateDescriptorProvider provider;
private readonly IServiceFactory serviceFactory;
public NamedTemplateFactory(ITemplateDescriptorProvider provider,
IServiceFactory serviceFactory)
{
private readonly Dictionary<string, object> cache = new();
this.provider = provider;
this.serviceFactory = serviceFactory;
}
private readonly ITemplateDescriptorProvider provider;
private readonly IServiceFactory serviceFactory;
public NamedTemplateFactory(ITemplateDescriptorProvider provider,
IServiceFactory serviceFactory)
public virtual object? Create(string name)
{
if (cache.TryGetValue(name, out object? view))
{
this.provider = provider;
this.serviceFactory = serviceFactory;
}
public virtual object? Create(string name)
{
if (cache.TryGetValue(name, out object? view))
{
return view;
}
if (provider.Get(name) is ITemplateDescriptor descriptor)
{
view = serviceFactory.Create(descriptor.TemplateType);
if (view is ICache cache)
{
this.cache[name] = cache;
}
if (descriptor.GetType().GenericTypeArguments is { Length: 2 })
{
(descriptor as dynamic).ViewInvoker?.Invoke(view);
}
}
return view;
}
if (provider.Get(name) is ITemplateDescriptor descriptor)
{
view = serviceFactory.Create(descriptor.TemplateType);
if (view is ICache cache)
{
this.cache[name] = cache;
}
if (descriptor.GetType().GenericTypeArguments is { Length: 2 })
{
(descriptor as dynamic).ViewInvoker?.Invoke(view);
}
}
return view;
}
}
}
@@ -1,24 +1,23 @@
using Microsoft.Extensions.DependencyInjection;
using System.Collections.ObjectModel;
namespace Toolkit.Foundation
namespace Toolkit.Framework.Foundation;
public class TemplateBuilder : ITemplateBuilder
{
public class TemplateBuilder : ITemplateBuilder
private readonly List<ITemplateDescriptor> descriptors = new();
public IReadOnlyCollection<ITemplateDescriptor> Descriptors => new ReadOnlyCollection<ITemplateDescriptor>(descriptors);
public ITemplateBuilder Add<TViewModel, TView>(string name, ServiceLifetime lifetime = ServiceLifetime.Transient)
{
private readonly List<ITemplateDescriptor> descriptors = new();
public IReadOnlyCollection<ITemplateDescriptor> Descriptors => new ReadOnlyCollection<ITemplateDescriptor>(descriptors);
public ITemplateBuilder Add<TViewModel, TView>(string name, ServiceLifetime lifetime = ServiceLifetime.Transient)
{
descriptors.Add(new TemplateDescriptor(typeof(TViewModel), typeof(TView), name, lifetime));
return this;
}
public ITemplateBuilder Add<TViewModel, TView>(ServiceLifetime lifetime = ServiceLifetime.Transient)
{
descriptors.Add(new TemplateDescriptor(typeof(TViewModel), typeof(TView), null, lifetime));
return this;
}
descriptors.Add(new TemplateDescriptor(typeof(TViewModel), typeof(TView), name, lifetime));
return this;
}
}
public ITemplateBuilder Add<TViewModel, TView>(ServiceLifetime lifetime = ServiceLifetime.Transient)
{
descriptors.Add(new TemplateDescriptor(typeof(TViewModel), typeof(TView), null, lifetime));
return this;
}
}
@@ -1,26 +1,25 @@
using Microsoft.Extensions.DependencyInjection;
namespace Toolkit.Foundation
namespace Toolkit.Framework.Foundation;
public class TemplateDescriptor : ITemplateDescriptor
{
public class TemplateDescriptor : ITemplateDescriptor
public TemplateDescriptor(Type dataType,
Type templateType,
string? name = null,
ServiceLifetime lifetime = ServiceLifetime.Transient)
{
public TemplateDescriptor(Type dataType,
Type templateType,
string? name = null,
ServiceLifetime lifetime = ServiceLifetime.Transient)
{
TemplateType = templateType;
ContentType = dataType;
Name = name;
Lifetime = lifetime;
}
public ServiceLifetime Lifetime { get; }
public Type TemplateType { get; }
public Type ContentType { get; }
public string? Name { get; }
TemplateType = templateType;
ContentType = dataType;
Name = name;
Lifetime = lifetime;
}
}
public ServiceLifetime Lifetime { get; }
public Type TemplateType { get; }
public Type ContentType { get; }
public string? Name { get; }
}
@@ -1,42 +1,41 @@
namespace Toolkit.Foundation
namespace Toolkit.Framework.Foundation;
public class TemplateDescriptorProvider : ITemplateDescriptorProvider
{
public class TemplateDescriptorProvider : ITemplateDescriptorProvider
private readonly IReadOnlyCollection<ITemplateDescriptor> descriptors;
public TemplateDescriptorProvider(IReadOnlyCollection<ITemplateDescriptor> descriptors)
{
private readonly IReadOnlyCollection<ITemplateDescriptor> descriptors;
public TemplateDescriptorProvider(IReadOnlyCollection<ITemplateDescriptor> descriptors)
{
this.descriptors = descriptors;
}
public ITemplateDescriptor? Get(string name)
{
if (descriptors.FirstOrDefault(x => x.Name == name) is ITemplateDescriptor descriptor)
{
return descriptor;
}
return null;
}
public ITemplateDescriptor? Get(Type type)
{
if (descriptors.FirstOrDefault(x => x.ContentType == type) is ITemplateDescriptor descriptor)
{
return descriptor;
}
return null;
}
public ITemplateDescriptor? Get<T>()
{
if (descriptors.FirstOrDefault(x => x.ContentType == typeof(T)) is ITemplateDescriptor descriptor)
{
return descriptor;
}
return null;
}
this.descriptors = descriptors;
}
}
public ITemplateDescriptor? Get(string name)
{
if (descriptors.FirstOrDefault(x => x.Name == name) is ITemplateDescriptor descriptor)
{
return descriptor;
}
return null;
}
public ITemplateDescriptor? Get(Type type)
{
if (descriptors.FirstOrDefault(x => x.ContentType == type) is ITemplateDescriptor descriptor)
{
return descriptor;
}
return null;
}
public ITemplateDescriptor? Get<T>()
{
if (descriptors.FirstOrDefault(x => x.ContentType == typeof(T)) is ITemplateDescriptor descriptor)
{
return descriptor;
}
return null;
}
}
@@ -1,43 +1,42 @@
using System.Diagnostics.CodeAnalysis;
namespace Toolkit.Foundation
namespace Toolkit.Framework.Foundation;
public class TemplateFactory : ITemplateFactory
{
public class TemplateFactory : ITemplateFactory
private readonly Dictionary<object, object> cache = new();
private readonly ITemplateDescriptorProvider provider;
private readonly IServiceFactory serviceFactory;
public TemplateFactory(ITemplateDescriptorProvider provider,
IServiceFactory serviceFactory)
{
private readonly Dictionary<object, object> cache = new();
this.provider = provider;
this.serviceFactory = serviceFactory;
}
private readonly ITemplateDescriptorProvider provider;
private readonly IServiceFactory serviceFactory;
public TemplateFactory(ITemplateDescriptorProvider provider,
IServiceFactory serviceFactory)
public virtual object? Create([MaybeNull] object? data)
{
if (data is null)
{
this.provider = provider;
this.serviceFactory = serviceFactory;
return null;
}
public virtual object? Create([MaybeNull] object? data)
if (cache.TryGetValue(data, out object? template))
{
if (data is null)
{
return null;
}
if (cache.TryGetValue(data, out object? template))
{
return template;
}
if (provider.Get(data.GetType()) is ITemplateDescriptor descriptor)
{
template = serviceFactory.Create(descriptor.TemplateType);
if (template is ICache cache)
{
this.cache[data] = cache;
}
}
return template;
}
if (provider.Get(data.GetType()) is ITemplateDescriptor descriptor)
{
template = serviceFactory.Create(descriptor.TemplateType);
if (template is ICache cache)
{
this.cache[data] = cache;
}
}
return template;
}
}
}
@@ -1,36 +1,35 @@
namespace Toolkit.Foundation
namespace Toolkit.Framework.Foundation;
public class TypedDataTemplateFactory : ITypedDataTemplateFactory
{
public class TypedDataTemplateFactory : ITypedDataTemplateFactory
private readonly Dictionary<Type, object> cache = new();
private readonly IReadOnlyCollection<ITemplateDescriptor> descriptors;
private readonly IServiceFactory serviceFactory;
public TypedDataTemplateFactory(IReadOnlyCollection<ITemplateDescriptor> descriptors,
IServiceFactory serviceFactory)
{
private readonly Dictionary<Type, object> cache = new();
this.descriptors = descriptors;
this.serviceFactory = serviceFactory;
}
private readonly IReadOnlyCollection<ITemplateDescriptor> descriptors;
private readonly IServiceFactory serviceFactory;
public TypedDataTemplateFactory(IReadOnlyCollection<ITemplateDescriptor> descriptors,
IServiceFactory serviceFactory)
public virtual object? Create(Type type, params object[] parameters)
{
if (cache.TryGetValue(type, out object? data))
{
this.descriptors = descriptors;
this.serviceFactory = serviceFactory;
}
public virtual object? Create(Type type, params object[] parameters)
{
if (cache.TryGetValue(type, out object? data))
{
return data;
}
if (descriptors.FirstOrDefault(x => x.ContentType == type) is ITemplateDescriptor descriptor)
{
data = parameters is { Length: > 0 } ? serviceFactory.Create<object>(descriptor.ContentType, parameters) : serviceFactory.Create(descriptor.ContentType);
if (data is ICache cache)
{
this.cache[type] = cache;
}
}
return data;
}
if (descriptors.FirstOrDefault(x => x.ContentType == type) is ITemplateDescriptor descriptor)
{
data = parameters is { Length: > 0 } ? serviceFactory.Create<object>(descriptor.ContentType, parameters) : serviceFactory.Create(descriptor.ContentType);
if (data is ICache cache)
{
this.cache[type] = cache;
}
}
return data;
}
}
}