public static void LoadPlugins()
        {
            TemplateEditorManager tem = new TemplateEditorManager();
            ProjectEditorManager pem = new ProjectEditorManager();

            editorManagers = new Dictionary<string, IEditorManager>();
            editorManagers.Add(tem.Name, tem);
            editorManagers.Add(pem.Name, pem);

            contentManagers = new Dictionary<string, IContentManager>();

            simplePluginManagers = new Dictionary<string, ISimplePluginManager>();

            FileInfo info = new FileInfo(Assembly.GetExecutingAssembly().Location);
            if (info.Exists)
            {
                foreach (FileInfo dllFile in info.Directory.GetFiles("MyGeneration.UI.Plugins.*.dll"))
                {
                    try
                    {
                        Assembly assembly = Assembly.LoadFile(dllFile.FullName);
                        foreach (Type type in assembly.GetTypes())
                        {
                            Type[] interfaces = type.GetInterfaces();
                            foreach (Type iface in interfaces)
                            {
                                if (iface == typeof(IEditorManager) || 
                                    iface == typeof(IContentManager) || 
                                    iface == typeof(ISimplePluginManager))
                                {
                                    try
                                    {
                                        ConstructorInfo[] constructors = type.GetConstructors();
                                        ConstructorInfo constructor = constructors[0];

                                        object plugin = constructor.Invoke(BindingFlags.CreateInstance, null, new object[] { }, null);
                                        if (plugin is IEditorManager)
                                        {
                                            IEditorManager em = plugin as IEditorManager;
                                            if (!editorManagers.ContainsKey(em.Name))
                                            {
                                                editorManagers[em.Name] = em;
                                            }
                                        }
                                        else if (plugin is IContentManager)
                                        {
                                            IContentManager cm = plugin as IContentManager;
                                            if (!contentManagers.ContainsKey(cm.Name))
                                            {
                                                contentManagers[cm.Name] = cm;
                                            }
                                        }
                                        else if (plugin is ISimplePluginManager)
                                        {
                                            ISimplePluginManager spm = plugin as ISimplePluginManager;
                                            if (!simplePluginManagers.ContainsKey(spm.Name))
                                            {
                                                simplePluginManagers[spm.Name] = spm;
                                            }
                                        }
                                    }
                                    catch (Exception ex)
                                    {
                                        pluginLoadErrors.Add(dllFile, ex);
                                    }
                                }
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        pluginLoadErrors.Add(dllFile, ex);
                    }
                }
            }
        }
Beispiel #2
0
        public static void LoadPlugins()
        {
            TemplateEditorManager tem = new TemplateEditorManager();
            ProjectEditorManager  pem = new ProjectEditorManager();

            editorManagers = new Dictionary <string, IEditorManager>();
            editorManagers.Add(tem.Name, tem);
            editorManagers.Add(pem.Name, pem);

            contentManagers = new Dictionary <string, IContentManager>();

            simplePluginManagers = new Dictionary <string, ISimplePluginManager>();

            FileInfo info = new FileInfo(Assembly.GetExecutingAssembly().Location);

            if (info.Exists)
            {
                foreach (FileInfo dllFile in info.Directory.GetFiles("MyGeneration.UI.Plugins.*.dll"))
                {
                    try
                    {
                        Assembly assembly = Assembly.LoadFile(dllFile.FullName);
                        foreach (Type type in assembly.GetTypes())
                        {
                            Type[] interfaces = type.GetInterfaces();
                            foreach (Type iface in interfaces)
                            {
                                if (iface == typeof(IEditorManager) ||
                                    iface == typeof(IContentManager) ||
                                    iface == typeof(ISimplePluginManager))
                                {
                                    try
                                    {
                                        ConstructorInfo[] constructors = type.GetConstructors();
                                        ConstructorInfo   constructor  = constructors[0];

                                        object plugin = constructor.Invoke(BindingFlags.CreateInstance, null, new object[] { }, null);
                                        if (plugin is IEditorManager)
                                        {
                                            IEditorManager em = plugin as IEditorManager;
                                            if (!editorManagers.ContainsKey(em.Name))
                                            {
                                                editorManagers[em.Name] = em;
                                            }
                                        }
                                        else if (plugin is IContentManager)
                                        {
                                            IContentManager cm = plugin as IContentManager;
                                            if (!contentManagers.ContainsKey(cm.Name))
                                            {
                                                contentManagers[cm.Name] = cm;
                                            }
                                        }
                                        else if (plugin is ISimplePluginManager)
                                        {
                                            ISimplePluginManager spm = plugin as ISimplePluginManager;
                                            if (!simplePluginManagers.ContainsKey(spm.Name))
                                            {
                                                simplePluginManagers[spm.Name] = spm;
                                            }
                                        }
                                    }
                                    catch (Exception ex)
                                    {
                                        pluginLoadErrors.Add(dllFile, ex);
                                    }
                                }
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        pluginLoadErrors.Add(dllFile, ex);
                    }
                }
            }
        }