public MajidPlugInManager() { PlugInSources = new PlugInSourceList(); //TODO: Try to use AssemblyLoadContext.Default..? RegisterToAssemblyResolve(PlugInSources); }
private static void RegisterToAssemblyResolve(PlugInSourceList plugInSources) { if (_isRegisteredToAssemblyResolve) { return; } lock (SyncObj) { if (_isRegisteredToAssemblyResolve) { return; } _isRegisteredToAssemblyResolve = true; AppDomain.CurrentDomain.AssemblyResolve += (sender, args) => { return(plugInSources.GetAllAssemblies().FirstOrDefault(a => a.FullName == args.Name)); }; } }
public static void AddFolder(this PlugInSourceList list, string folder, SearchOption searchOption = SearchOption.TopDirectoryOnly) { list.Add(new FolderPlugInSource(folder, searchOption)); }
public static void AddTypeList(this PlugInSourceList list, params Type[] moduleTypes) { list.Add(new PlugInTypeListSource(moduleTypes)); }