private static IBooksProvider GetPlugin(Assembly assembly, IRestRequestManager reqMngr) { if (assembly == null) { throw new ArgumentNullException(nameof(assembly), "assembly cannot be null."); } Type availableTypes2 = assembly.ExportedTypes.FirstOrDefault(type => type.GetInterface("IBooksProvider") != null); // Type availableTypes = assembly.DefinedTypes.FirstOrDefault(info => info.Name == "IBooksProvider");//. .GetInterface("IBooksProvider"); //.FirstOrDefault(info => info.ImplementedInterfaces.FirstOrDefault(type => type.Name == "IBooksProvider") != null ); if (availableTypes2 != null) { return((IBooksProvider)Activator.CreateInstance(availableTypes2, reqMngr)); // var res = Activator.CreateInstance(availableTypes); } //return Activator.CreateInstance(availableTypes) as IBooksProvider; return(null); }
public GoogleBookProvider(IRestRequestManager restMngr) { this.restMngr = restMngr; }
public static IBooksProvider GetPluginFromFolder(string pluginName, string pluginFolder, IRestRequestManager reqMngr) { var assembly = LoadPlugInAssembly(pluginName, pluginFolder); return(GetPlugin(assembly, reqMngr)); }