public static PluginLoader <T> Create(string appName, IPluginPaths paths = null, IAppDomain appDomain = null, IPluginLoaderSettings settings = null, ITypeLoader <T> typeLoader = null, IAssemblyCache assemblyDictionary = null, IAssemblyNameReader assemblyNameReader = null, IAssemblyLoader assemblyLoader = null, IWaiter waiter = null, IPluginDependencyResolverObjectCreator pluginDependencyResolverObjectCreator = null, IPluginDependencyResolverCacheFactory pluginDependencyResolverCacheFactory = null, IPluginCacheFactory <T> pluginCacheFactory = null, IPluginLoaderLogger logger = null) { logger = logger ?? PluginLoaderLogger.Factory(new AppSettings()); appDomain = appDomain ?? new AppDomainWrapper(AppDomain.CurrentDomain, logger); paths = paths ?? new AppPluginPaths(appName, null, appDomain, logger); settings = settings ?? PluginLoaderSettings.Default; typeLoader = typeLoader ?? new TypeLoader <T>(settings, logger); assemblyNameReader = assemblyNameReader ?? new AssemblyNameReader(); assemblyDictionary = assemblyDictionary ?? new AssemblyCache(appDomain, assemblyNameReader, logger); assemblyLoader = assemblyLoader ?? new AssemblyLoader(appDomain, settings, assemblyDictionary, assemblyNameReader, logger); waiter = waiter ?? new Waiter(logger); pluginDependencyResolverObjectCreator = pluginDependencyResolverObjectCreator ?? new PluginDependencyResolverObjectCreator(appDomain, settings, assemblyLoader, waiter, new AssemblyResolveCache(), logger); pluginDependencyResolverCacheFactory = pluginDependencyResolverCacheFactory ?? new PluginDependencyResolverCacheFactory(pluginDependencyResolverObjectCreator, logger); pluginCacheFactory = pluginCacheFactory ?? new PluginCacheFactory <T>(typeLoader, pluginDependencyResolverCacheFactory, assemblyLoader, logger); return(new PluginLoader <T>(paths, pluginCacheFactory)); }
public PluginObjectCreator(IPluginLoaderSettings settings, IObjectCreator <T> objectCreator, IPluginLoaderLogger logger) { _Settings = settings; _Logger = logger; _ObjectCreator = objectCreator; }
public TestRuntimePluginLoader(IAppDomain appDomain, IPluginLoaderSettings settings, IPluginLoaderFactory <IOrganization> pluginLoaderFactory, IPluginObjectCreator <IOrganization> pluginObjectCreator, IPluginPaths pluginPaths, IPluginLoaderLogger logger) : base(appDomain, settings, pluginLoaderFactory, pluginObjectCreator, pluginPaths, logger) { }
public CavemanHammerRuntimePluginLoader(IAppDomain appDomain, IPluginLoaderSettings settings, IPluginLoaderFactory <ICaveManTool <Hammer> > pluginLoaderFactory, IPluginObjectCreator <ICaveManTool <Hammer> > pluginObjectCreator, IPluginPaths pluginPaths = null, IPluginLoaderLogger logger = null) : base(appDomain, settings, pluginLoaderFactory, pluginObjectCreator, pluginPaths, logger) { }
public AssemblyLoader(IAppDomain appDomain, IPluginLoaderSettings settings, IAssemblyCache assemblyCache, IAssemblyNameReader assemblyNameReader, IPluginLoaderLogger logger) { _AppDomain = appDomain ?? throw new ArgumentNullException(nameof(appDomain)); _Settings = settings ?? throw new ArgumentNullException(nameof(settings)); _AssemblyCache = assemblyCache ?? throw new ArgumentNullException(nameof(assemblyCache)); _AssemblyNameReader = assemblyNameReader ?? throw new ArgumentNullException(nameof(assemblyNameReader)); _Logger = logger; }
public PluginDependencyResolverObjectCreator(IAppDomain appDomain, IPluginLoaderSettings settings, IAssemblyLoader assemblyLoader, IWaiter waiter, IAssemblyResolveCache assemblyResolveCache, IPluginLoaderLogger logger) { _AppDomain = appDomain ?? throw new ArgumentNullException(nameof(appDomain)); _Settings = settings ?? throw new ArgumentNullException(nameof(settings)); _AssemblyLoader = assemblyLoader ?? throw new ArgumentNullException(nameof(assemblyLoader)); _Waiter = waiter; _AssemblyResolveCache = assemblyResolveCache; _Logger = logger; }
public static List <string> GetPaths(this IPlugin plugin, IPluginLoaderSettings settings) { if (plugin == null || string.IsNullOrWhiteSpace(plugin.FullPath)) { return(null); } var paths = new List <string> { "", // Try current path plugin.Directory, // Try plugin directory Path.Combine(plugin.Directory, "bin"), // Try plugin\bin directory Path.Combine(plugin.Directory, plugin.Name), // Try plugin\<pluginName> directory Path.Combine(plugin.Directory, plugin.Name, "bin") // Try plugin\<pluginName>\bin directory }; // This allows for two plugins that share a dll to have Copy Local set to false, and both look to the same folder if (settings?.SharedPaths?.Any() != null) { paths.AddRange(settings.SharedPaths); } return(paths); }
public RuntimePluginLoaderBase(IAppDomain appDomain, IPluginLoaderSettings settings, IPluginLoaderFactory <T> pluginLoaderFactory, IPluginObjectCreator <T> pluginObjectCreator, IPluginPaths pluginPaths = null, IPluginLoaderLogger logger = null, bool disconnectResolverOnPluginLoad = false, bool disconnectResolverOnPluginTypeLoad = false) { _AppDomain = appDomain ?? throw new ArgumentNullException(nameof(appDomain)); _Settings = settings ?? throw new ArgumentNullException(nameof(settings)); _PluginLoaderFactory = pluginLoaderFactory ?? throw new ArgumentNullException(nameof(pluginLoaderFactory)); _PluginObjectCreator = pluginObjectCreator ?? throw new ArgumentNullException(nameof(pluginObjectCreator)); pluginPaths = pluginPaths ?? new AppPluginPaths(_Settings.AppName, GetDefaultPluginDirectory(), _AppDomain, _Logger); _PluginPaths = string.IsNullOrWhiteSpace(PluginSubFolder) ? pluginPaths : new PluginPaths { Paths = pluginPaths.Paths.Select(p => Path.Combine(p, PluginSubFolder)) }; _Logger = logger; _DisconnectResolverOnPluginLoad = disconnectResolverOnPluginLoad; _DisconnectResolverOnPluginTypeLoad = disconnectResolverOnPluginTypeLoad; }
public TypeLoader(IPluginLoaderSettings settings, IPluginLoaderLogger logger) { _Settings = settings ?? throw new ArgumentNullException(nameof(settings)); _Logger = logger ?? throw new ArgumentNullException(nameof(logger)); }