public void SetUp() { _pluginDirectory = @"C:\Temp\Plugins"; _assemblyLocation = Path.Combine(_pluginDirectory, "TestPlugin.dll"); _filesystem = new Mock<IFileSystem>(); _filesystem.Setup(x => x.GetFiles(_pluginDirectory, "*.dll")).Returns(new[] { _assemblyLocation }); _filesystem.Setup(s => s.GetSubDirectories(_pluginDirectory)).Returns(new List<string>()); _pluginMetadata = BuildMetadata("1.0.0.0", "TestPlugin"); _pluginLoader = new Mock<IPluginLoader>(); _mockPlugin = new Mock<IPlugin>(); _pluginLoader.Setup(x => x.CreateInstance(_pluginMetadata)).Returns(_mockPlugin.Object); _pluginLoader.Setup(x => x.InspectAssembly(_assemblyLocation)).Returns(_pluginMetadata); _pluginFactory = new PluginFactory(_filesystem.Object, _pluginDirectory, _pluginLoader.Object); }
private void PopulateMetadata(PluginMetadata pluginInfo) { var existingPlugin = _availablePlugins .FirstOrDefault(p => p.Name == pluginInfo.Name); if (existingPlugin != null) { _availablePlugins.Remove(existingPlugin); } _availablePlugins.Add(pluginInfo); }
public IPlugin CreateInstance(PluginMetadata pluginMetadata) { var assembly = Assembly.LoadFile(pluginMetadata.AssemblyLocation); var pluginEntryClass = assembly.GetType(pluginMetadata.EntryClass); pluginMetadata.AssemblyInstance = (IPlugin) Activator.CreateInstance(pluginEntryClass, null); return pluginMetadata.AssemblyInstance; }
private PluginMetadata PopulateMetadata(string name, Version version, string className, string assemblyLocation) { var plugin = new PluginMetadata { Name = name, ModelVersion = version, EntryClass = className, AssemblyLocation = assemblyLocation }; return plugin; }