Esempio n. 1
0
        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));
            }
        }
Esempio n. 2
0
        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);
            }
        }