public bool LoadAssembly(PluginInfo pinfo, ProxyFrame proxy) { try { pinfo.Modules.Clear(); bool started = false; Assembly assembly = Assembly.LoadFile(System.IO.Path.GetFullPath(pinfo.Path)); foreach (Type t in assembly.GetTypes()) { if (t.IsSubclassOf(typeof(ProxyPlugin))) { ConstructorInfo info = t.GetConstructor(new Type[] { typeof(ProxyFrame) }); if (info == null) { OpenMetaverse.Logger.Log(string.Format("No suitable contructor for {0} in {1}", t.ToString(), pinfo.Name), OpenMetaverse.Helpers.LogLevel.Warning); } else { ProxyPlugin plugin = (ProxyPlugin)info.Invoke(new object[] { proxy }); plugin.Init(); pinfo.Modules.Add(t.ToString()); started = true; } } } if (started) { OpenMetaverse.Logger.Log(string.Format("Loaded {0} plugins from {1}: {2}", pinfo.Modules.Count.ToString(), pinfo.Name, string.Join(", ", pinfo.Modules.ToArray())), OpenMetaverse.Helpers.LogLevel.Info); } else { OpenMetaverse.Logger.Log("Found no plugins in " + pinfo.Name, OpenMetaverse.Helpers.LogLevel.Warning); } return(started); } catch (Exception e) { OpenMetaverse.Logger.Log("Failed loading plugins from " + pinfo.Path + ": " + e.Message, OpenMetaverse.Helpers.LogLevel.Error); } return(false); }
public void LoadPlugin(string name) { Assembly assembly = Assembly.LoadFile(Path.GetFullPath(name)); foreach (Type t in assembly.GetTypes()) { try { if (t.IsSubclassOf(typeof(ProxyPlugin))) { ConstructorInfo info = t.GetConstructor(new Type[] { typeof(ProxyFrame) }); ProxyPlugin plugin = (ProxyPlugin)info.Invoke(new object[] { _Frame }); plugin.Init(); listView1.Items.Add(new ListViewItem(new [] { assembly.ManifestModule.Name, Path.GetFullPath(name) })); } } catch (Exception e) { Console.WriteLine(e.ToString()); } } }
public void LoadPlugin(string name) { Assembly assembly = Assembly.LoadFile(Path.GetFullPath(name)); //assembly.g try { foreach (Type t in assembly.GetTypes()) { try { if (t.IsSubclassOf(typeof(ProxyPlugin))) { ConstructorInfo info = t.GetConstructor(new Type[] { typeof(ProxyFrame) }); ProxyPlugin plugin = (ProxyPlugin)info.Invoke(new object[] { _Frame }); plugin.Init(); listView1.Items.Add(new ListViewItem(new[] { assembly.ManifestModule.Name, Path.GetFullPath(name) })); } } catch (ReflectionTypeLoadException e) { String info = e.ToString() + "\n"; foreach (Exception ee in e.LoaderExceptions) { MessageBox.Show(ee.ToString()); info += ee.ToString() + "\n"; } MessageBox.Show(info); Console.WriteLine(e.ToString()); } } } catch (Exception e) { MessageBox.Show(e.ToString()); } }