/// <summary> /// Populates the provided <paramref name="collection"/> with the assemblies generated by this silo. /// </summary> /// <param name="collection">The collection to populate.</param> public void UpdateGeneratedAssemblies(GeneratedAssemblies collection) { var generatedAssemblies = CodeGeneratorManager.GetGeneratedAssemblies(); foreach (var asm in generatedAssemblies) { collection.Add(asm.Key, asm.Value); } }
/// <summary> /// Initializes this instance. /// </summary> public void Initialize() { if (this.initialized) { return; } lock (this.initializationLock) { if (this.initialized) { return; } // load the code generator before intercepting assembly loading codeGeneratorManager.Initialize(); // initialize serialization for all assemblies to be loaded. AppDomain.CurrentDomain.AssemblyLoad += this.OnAssemblyLoad; Assembly[] assemblies = AppDomain.CurrentDomain.GetAssemblies(); // initialize serialization for already loaded assemblies. var generated = codeGeneratorManager.GenerateAndLoadForAssemblies(assemblies); if (generated != null) { foreach (var generatedAssembly in generated) { this.ProcessAssembly(generatedAssembly?.Assembly); } } foreach (var generatedAssembly in CodeGeneratorManager.GetGeneratedAssemblies().Values) { this.ProcessAssembly(generatedAssembly?.Assembly); } foreach (var assembly in assemblies) { this.ProcessAssembly(assembly); } this.initialized = true; } }