Esempio n. 1
0
        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);
        }