public void Initialize() { L.W("ADA SCK", "Initializing Socket manager"); var a = typeof(AdaSocketManager).GetTypeInfo().Assembly; var l = a.Location; l = Path.GetDirectoryName(l); var m = Path.Combine(l, "providers"); this.LoadedAssemblies = new Dictionary <string, Assembly>(); FrameworkAssemblyLoader.ResolvingAssembly += ResolvingProvider; if (Directory.Exists(m)) { var x = Directory.GetFiles(m, "*.dll", SearchOption.TopDirectoryOnly); foreach (var xx in x) { L.W("ADA SCK", "Loaded provider file '{0}'", xx); var xa = FrameworkAssemblyLoader.LoadFile(xx); this.LoadedAssemblies[xa.GetName().Name] = xa; } var tpi = typeof(IWebSocketProvider); var tpp = this.LoadedAssemblies.SelectMany(xa => xa.Value.ExportedTypes).FirstOrDefault(xt => tpi.IsAssignableFrom(xt) && !xt.GetTypeInfo().IsInterface); if (tpp != null) { var sp = (IWebSocketProvider)Activator.CreateInstance(tpp); this.SocketProvider = sp; L.W("ADA SCK", "Loaded socket provider: '{0}'", sp.GetType().ToString()); } } L.W("ADA SCK", "Done"); }
public void LoadAssemblies() { L.W("ADA PLG", "Loading all plugin assemblies"); this.LoadedAssemblies = new Dictionary <string, Assembly>(); var a = typeof(AdaPlugin).GetTypeInfo().Assembly; this.LoadedAssemblies.Add(a.GetName().Name, a); this.MainAssembly = a; var l = a.Location; l = Path.GetDirectoryName(l); var r = Path.Combine(l, "references"); if (Directory.Exists(r)) { var x = Directory.GetFiles(r, "*.dll", SearchOption.TopDirectoryOnly); foreach (var xx in x) { L.W("ADA PLG", "Loaded reference file '{0}'", xx); var xa = FrameworkAssemblyLoader.LoadFile(xx); this.LoadedAssemblies.Add(xa.GetName().Name, xa); } } l = Path.Combine(l, "plugins"); if (Directory.Exists(l)) { var x = Directory.GetFiles(l, "*.dll", SearchOption.TopDirectoryOnly); foreach (var xx in x) { L.W("ADA PLG", "Loaded file '{0}'", xx); var xa = FrameworkAssemblyLoader.LoadFile(xx); this.LoadedAssemblies.Add(xa.GetName().Name, xa); } } L.W("ADA PLG", "Registering plugin dependency resolver"); FrameworkAssemblyLoader.ResolvingAssembly += ResolvePlugin; L.W("ADA PLG", "Done"); }