private void RegisterAssemblyInPartManager(IPlugin plugin) { var pluginAssemblies = AvailablePluginAssemblies.FirstOrDefault(a => a.Item1.AssemblyName == plugin.AssemblyName)?.Item2; if (pluginAssemblies == null) { throw new KeyNotFoundException($"Can not find assembles for plugin: {plugin.Name}"); } foreach (var assembly in pluginAssemblies) { _appPartManager.ApplicationParts.Add(new AssemblyPart(assembly)); } }
private void RemoveFromAssemblyInPartManager(IPlugin plugin) { var pluginAssemblies = AvailablePluginAssemblies.FirstOrDefault(a => a.Item1.AssemblyName == plugin.AssemblyName)?.Item2; if (pluginAssemblies == null) { throw new KeyNotFoundException($"Can not find assembles for plugin: {plugin.Name}"); } foreach (var assembly in pluginAssemblies) { var assemblyPart = new AssemblyPart(assembly); var assmblyPartFromMgr = _appPartManager.ApplicationParts.FirstOrDefault(a => a.Name == assemblyPart.Name); if (assmblyPartFromMgr == null) { throw new NullReferenceException($"Can not find the assembly {assembly.FullName} in ApplicationPartManager"); } _appPartManager.ApplicationParts.Remove(assmblyPartFromMgr); } }