}
public void LoadPlugin(string assemblyname) {
- Assembly a = Assembly.LoadFile(Environment.GetEnvironmentVariable("WEBTHING_HOME") + "/plugins/" + assemblyname + ".dll");
+ Assembly a = FindAssembly(assemblyname);
+ if (a == null) return;
Type[] types = a.GetTypes();
+
foreach (Type t in types) {
if (t.IsSubclassOf(typeof(WebThingPlugin))) {
+ if (Plugins.ContainsKey(t.FullName))
+ continue;
WebThingPlugin p = (WebThingPlugin) a.CreateInstance(t.FullName, false, BindingFlags.ExactBinding, null, null, null, null);
p.Init(wt);
Plugins[t.FullName] = p;
}
}
+ private Assembly FindAssembly(string assemblyname) {
+ foreach (string path in Config.PluginPath) {
+ try {
+ return Assembly.LoadFile(path + "/" + assemblyname + ".dll");
+ } catch {
+ }
+ }
+ Console.WriteLine("Could not find {0}", assemblyname);
+ return null;
+ }
+
public void WebViewSetup(WebView view) {
foreach (string key in PluginOrder) {
Plugins[key].InitWebView(view);