public void RuntimePluginLoaderBase_PluginLoader_FactoryReturnsPluginLoader_Test() { // Arrange _MockPluginPaths.Setup(m => m.Paths).Returns(_Paths); var loader = CreateInstance2Loader(); var expectedPaths = new List <string> { $@"c:\my\path\{loader.PluginSubFolder}", $@"c:\some\other\path\{loader.PluginSubFolder}" }; var mockPluginCacheFactory = _MockRepository.Create <IPluginCacheFactory <Org> >(); IPluginPaths actualPluginPaths = null; _MockPluginLoaderFactory.Setup(m => m.Create(It.IsAny <PluginPaths>())) .Returns((IPluginPaths pluginPaths) => { actualPluginPaths = pluginPaths; return(new PluginLoader <Org>(pluginPaths, mockPluginCacheFactory.Object)); }); // Act var actual = loader.PluginLoader; // Assert Assert.IsNotNull(actual); CollectionAssert.AreEqual(expectedPaths, actualPluginPaths.Paths.ToList()); _MockRepository.VerifyAll(); }
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 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 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 IPluginLoader <T> Create(IPluginPaths pluginPaths) { return(new PluginLoader <T>(pluginPaths, _PluginCacheFactory)); }
public PluginLoader(IPluginPaths paths, IPluginCacheFactory <T> pluginCacheFactory) { Paths = paths ?? throw new ArgumentNullException(nameof(paths)); _PluginCacheFactory = pluginCacheFactory ?? throw new ArgumentNullException(nameof(pluginCacheFactory)); }