public static void PrepareCurrentDomain( ) { if (!Loaded) { lock (StaticServiceProvider.ServiceCollection) { if (!Loaded) { Loaded = true; } else { return; } } AppDomain.CurrentDomain.AssemblyLoad += CurrentDomain_AssemblyLoad; Assembly [] assemblies = AppDomain.CurrentDomain.GetAssemblies( ); int assembliesCount = assemblies.Length; for (int i = 0; i < assembliesCount; i++) { Assembly assembly = assemblies [i]; lock (StaticServiceProvider.ServiceCollection) { assembly.Prepare( ); } } StaticServiceProvider.Update( ); } }
private static void CurrentDomain_AssemblyLoad(object sender, AssemblyLoadEventArgs args) { lock (StaticServiceProvider.ServiceCollection) { args.LoadedAssembly.Prepare( ); } StaticServiceProvider.Update( ); }
public IServiceCollection CreateBuilder(IServiceCollection services) { StaticServiceProvider.ServiceCollection.Add(services); StaticServiceProvider.Update( ); return(StaticServiceProvider.ServiceCollection); }