12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- using System.Collections.Generic;
- using System.Collections.ObjectModel;
- using System.Linq;
- using Luticate2.Auth.Utils.Business.ObjectConverter;
- using Luticate2.Auth.Utils.Business.ObjectConverterDescriptor;
- using Luticate2.Auth.Utils.Interfaces;
- using Microsoft.Extensions.DependencyInjection;
- using Microsoft.Extensions.DependencyInjection.Extensions;
-
- namespace Luticate2.Auth.Utils.Business.Converters
- {
- public static class LuConvertersExtensions
- {
- public static void AddLuObjectConverterDescriptors(this IServiceCollection services)
- {
- var typeILuObjectConverterDescriptor = typeof(ILuObjectConverterDescriptor<,>);
- var typeILuObjectConverterDescriptorEnumerable =
- typeILuObjectConverterDescriptor.MakeGenericType(typeof(Enumerable), typeof(Enumerable));
-
- services.AddSingleton<ILuObjectConverterDescriptorIdentity, LuObjectConverterDescriptorIdentity>();
- services.AddSingleton(typeILuObjectConverterDescriptorEnumerable, typeof(LuObjectConverterDescriptorEnumerable));
- }
-
- public static void AddLuObjectConverters(this IServiceCollection services)
- {
- var typeILuObjectConverter = typeof(ILuObjectConverter<,>);
- var listTypes = new []
- {
- typeof(IEnumerable<>),
- typeof(ICollection<>),
- typeof(Collection<>),
- typeof(IList<>),
- typeof(List<>)
- };
-
- services.TryAddSingleton<ILuConvertersAllocator, LuConvertersAllocator>();
- services.AddSingleton<ILuObjectConverterIdentity, LuObjectConverterIdentity>();
- foreach (var typeFrom in listTypes)
- {
- foreach (var typeTo in listTypes)
- {
- services.AddSingleton(typeILuObjectConverter.MakeGenericType(typeFrom, typeTo), typeof(LuObjectConverterLists));
- }
- }
- }
-
- public static void AddLuObjectConverterPoco<TTypeFrom, TTypeTo>(this IServiceCollection services)
- {
- services.AddSingleton<ILuObjectConverter<TTypeFrom, TTypeTo>, LuObjectConverterPoco<TTypeFrom, TTypeTo>>();
- }
- }
- }
|