// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { services.AddCors(); services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1); services.AddSingleton <IConfigurationSection>(Configuration.GetSection("Captcha")); var sp = services.BuildServiceProvider(); var genTypeName = Configuration.GetValue <string>("Captcha:GeneratorType"); if (string.IsNullOrEmpty(genTypeName)) { services.AddSingleton <ICaptchaGenerator, EnglishAlphaNumericProvider>(); } else { var type = Type.GetType(genTypeName, true); ICaptchaGenerator generator = (ICaptchaGenerator)ActivatorUtilities.CreateInstance(sp, type); services.AddSingleton <ICaptchaGenerator>(generator); } var repoTypeName = Configuration.GetValue <string>("Captcha:RepositoryType"); if (string.IsNullOrEmpty(repoTypeName)) { services.AddSingleton <ICaptchaRepository, CaptchaInMemoryRepository>(); } else { var type = Type.GetType(repoTypeName, true); ICaptchaRepository repository = (ICaptchaRepository)ActivatorUtilities.CreateInstance(sp, type); services.AddSingleton <ICaptchaRepository>(repository); } }
public CaptchaController(ICaptchaGenerator generator, ICaptchaRepository repository) { _generator = generator; _repository = repository; }