public Dictionary <DateTime, Dictionary <string, WorkItem> > ProcessBugDatabase(string dllPath, IEnumerable <string> dllArgs) { string path = fileSystem.GetFullPath(dllPath); IBugDatabaseProvider databaseProvider = bugDatabaseDllLoader.Load(path, dllArgs, webRequest); return(databaseProvider.Process()); }
public IBugDatabaseProvider Load(string path, IEnumerable <string> args, IWebRequest webRequest) { _Assembly dll = bugDatabaseFactory.LoadFile(path); IEnumerable <Type> validTypes = dll.GetExportedTypes().Where((type) => typeof(IBugDatabaseProvider).IsAssignableFrom(type)); if (!validTypes.Any()) { throw new Exception($"Dll must contain a public implementation of '{typeof(IBugDatabaseProvider)}'"); } else if (validTypes.Count() > 1) { throw new Exception($"Dll can only contain one public implementation of '{typeof(IBugDatabaseProvider)}'. Found {validTypes.Count()}"); } IBugDatabaseProvider databaseProvider = bugDatabaseFactory.CreateInstance(validTypes.First()); databaseProvider.Logger = logger; databaseProvider.WebRequest = webRequest; if (databaseProvider.ProcessArgs(args) != 0) { throw new Exception("Unable to parse Dll arguments. Check requirements"); } return(databaseProvider); }