Beispiel #1
0
        public PluginLoader(Instance instance, string path)
        {
            List <IRegisteredPlugin> registeredPlugins = new();

            foreach (string pluginPath in InbuiltPluginFinder.GetInbuiltPlugins(path))
            {
                PluginLoadContext pluginContext  = new(pluginPath);
                Assembly          pluginAssembly = pluginContext.LoadFromAssemblyName(new AssemblyName(Path.GetFileNameWithoutExtension(pluginPath)));
                foreach (Type type in pluginAssembly.GetExportedTypes())
                {
                    if (typeof(IPlugin).IsAssignableFrom(type) && !type.IsInterface)
                    {
                        IPlugin          plugin           = (IPlugin)Activator.CreateInstance(type);
                        RegisteredPlugin registeredPlugin = new(plugin, instance);
                        if (AutoLoadPlugins.Contains(registeredPlugin.PluginName))
                        {
                            registeredPlugin.Load();
                        }
                        if (registeredPlugin.PluginName == "Base plugin functionality")
                        {
                            registeredPlugin.RegisterNode(new InputNode());
                        }
                        registeredPlugins.Add(registeredPlugin);
                    }
                }
            }
            RegisteredPlugins = registeredPlugins.ToArray();
        }
Beispiel #2
0
 public PluginLoader(IPluginHost pluginHost)
 {
     foreach (string pluginPath in InbuiltPluginFinder.GetInbuiltPlugins())
     {
         PluginLoadContext pluginContext  = new(pluginPath);
         Assembly          pluginAssembly = pluginContext.LoadFromAssemblyName(new AssemblyName(Path.GetFileNameWithoutExtension(pluginPath)));
         foreach (Type type in pluginAssembly.GetExportedTypes())
         {
             if (typeof(IPlugin).IsAssignableFrom(type) && !type.IsInterface)
             {
                 IPlugin plugin = (IPlugin)Activator.CreateInstance(type);
                 plugin.Register(pluginHost);
             }
         }
     }
 }