Advertisement
Guest User

Untitled

a guest
Jun 24th, 2018
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.66 KB | None | 0 0
  1.   var qq = new SearchQueryDalExecutor(null);
  2.             var assembliesNames = GetType().Assembly.GetReferencedAssemblies()
  3.                 .Where(a => a.FullName.Contains("Autosputnik")).ToList();
  4.             assembliesNames.ForEach(a => Assembly.Load(a));
  5.             var assemblies = AppDomain.CurrentDomain.GetAssemblies().Where(a => a.FullName.Contains("Autosputnik"))
  6.                 .ToList();
  7.             var registrations = assemblies.SelectMany(a1 => a1.GetExportedTypes()
  8.                 .SelectMany(t => t.GetCustomAttributes(false).Where(a => a is RegisterToDiAttribute)
  9.                     .Select(a => (t, (a as RegisterToDiAttribute).InterfaceType)))).ToList();
  10.  
  11.             foreach (var (type, interfaceType) in registrations)
  12.             {
  13.                 if (interfaceType == default(Type[]))
  14.                     services.AddTransient(type);
  15.                 else
  16.                     foreach (var iType in interfaceType)
  17.                     {
  18.                         services.AddTransient(iType, type);
  19.                     }
  20.             }
  21.  
  22.             var singletonRegistrations = assemblies.SelectMany(a1 => a1.GetExportedTypes()
  23.                 .SelectMany(t => t.GetCustomAttributes(false).Where(a => a is RegisterSingletonToDiAttribute)
  24.                     .Select(a =>
  25.                         (t, (a as RegisterSingletonToDiAttribute)?.InterfaceType)))).ToList();
  26.  
  27.             foreach (var (type, interfaceType) in singletonRegistrations)
  28.             {
  29.                 if (interfaceType == default)
  30.                     services.AddSingleton(type);
  31.                 else
  32.                     services.AddSingleton(interfaceType, type);
  33.             }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement