public void Register(IInputProvider input) { if (input != null) { Context.Debug(() => $"Registering {input.GetType().Name}."); } InputProvider = input; }
public void SubscribeInputProvider(IInputProvider newInputProvider) { bool providerAlreadyExists = false; foreach (var provider in this.inputProviders) { if (provider.GetType() == newInputProvider.GetType()) { providerAlreadyExists = true; break; } } if (!providerAlreadyExists) { inputProviders.Add(newInputProvider); SubscribeToInputProviderEvents(newInputProvider); } }
static void Initialization(Configuration config) { Logger = new Logger.Logger(config.LogPath, new TimeProvider()); Logger.Log("Logger initialized"); Reader = InputProviderFactory.CreateInputReader(config); Logger.Log("Reader of type " + Reader.GetType().Name + " initialized"); Driver = new InternetExplorerDriver("Resources/"); Logger.Log("InternetExplorerDriver initialized"); Parsers = new List <IAbstractSiteParser>() { //new Auto911Parser("http://911auto.com.ua/search/", Driver, Logger), //new AutoKlad("SiteParser/IE Driver/", Logger) }; Logger.Log("Site parsers initialized"); Store = DataStoreFactory.CreateDataStore(config, Logger); Logger.Log("DataStore of type " + Store.GetType() + "Initialized"); }
private void InitializeInputProvider() { var providerInterfaceType = typeof(IInputProvider); var path = Path.Combine(App.DataDir, ProvidersRootDir, _settings.InputProviderPath); try { if (!File.Exists(path)) { Log.Error($"Could not load input provider. File does not exist at {path}"); return; } } catch (Exception e) { Log.Error($"Caught file exception related to input provider: {e}"); return; } if (!TryLoadAssemblyFrom(path, out var a)) { Log.Error("Failed to load assembly for provider."); return; } Log.Info("Provider assembly loaded. Searching for instances."); Type providerType = null; foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies()) { foreach (var type in assembly.GetTypes()) { if (!providerInterfaceType.IsAssignableFrom(type) || !type.IsClass || type.IsAbstract) { continue; } providerType = type; break; } } if (providerType == null) { Log.Error($"No {providerInterfaceType.Name} implementation could be found inside the loaded assembly {path}"); return; } object instance = null; try { instance = Activator.CreateInstance(providerType); _provider = (IInputProvider)instance; } catch (Exception e) { Log.Error($"Exception thrown when instantiating or casting provider '{instance.GetType().Name}': {e}"); return; } if (_provider == null) { Log.Error($"Unknown error. Provider could not be instantiated/cast to {providerInterfaceType.Name}"); return; } _provider.Cursor = this; _provider.DataDir = App.DataDir; _provider.Hotspots = Hotspots; try { _provider.Start(); Log.Info($"Input provider '{_provider.GetType().Name}'"); } catch (Exception e) { Log.Error($"Exception caught while starting {_provider.GetType().Name}. {e}"); } }
private IEnumerable<CommandBinding> GetDefaultBindings(IInputProvider inputProvider, ICommand command) { if (command == null) { yield break; } var attributes = command.GetType().GetCustomAttributes(typeof(DefaultBindingAttribute), false).OfType<DefaultBindingAttribute>(); foreach (var defaultBinding in attributes.Where((attr) => attr.ProviderType == inputProvider.GetType())) { yield return new CommandBinding(defaultBinding.InputSequence, command); } }