public void RegisterFrom(CollectibleAssemblyLoadContext assemblyLoadContext)
        {
            var assembly = assemblyLoadContext.GetEntryPointAssembly();
            IEnumerable<Type> providers = assembly.GetExportedTypes().Where(p => p.GetInterfaces().Any(x => x.Name == "INotificationProvider"));

            if (providers.Any())
            {


                foreach (Type p in providers)
                {
                    INotificationProvider obj = (INotificationProvider)assembly.CreateInstance(p.FullName);
                    Dictionary<string, List<INotificationHandler>> result = obj.GetNotifications();

                    foreach (KeyValuePair<string, List<INotificationHandler>> item in result)
                    {
                        foreach (INotificationHandler i in item.Value)
                        {
                            
                            Subscribe(item.Key, i);
                            
                        }
                    }
                }
            }
        }
        public void AddFromLoadContext(CollectibleAssemblyLoadContext assemblyLoadContext)
        {
            var assembly      = assemblyLoadContext.GetEntryPointAssembly();
            var pluginContext = assembly.GetExportedTypes().SingleOrDefault(p => p.GetInterfaces().Any(x => x.Name == nameof(IPluginContext)));

            if (pluginContext != null)
            {
                IPluginContext obj = (IPluginContext)assembly.CreateInstance(pluginContext.FullName);

                Add(assemblyLoadContext.PluginName, obj);
            }
        }
 public void UnRegisterFrom(CollectibleAssemblyLoadContext assemblyLoadContext)
 {
     var assembly = assemblyLoadContext.GetEntryPointAssembly();
     foreach(var kp in _containers)
        kp.Value.RemoveAll(handler => handler.GetType().Assembly.GetName() == assembly.GetName());
 }