You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@lucenenet.apache.org by GitBox <gi...@apache.org> on 2020/08/03 19:47:20 UTC

[GitHub] [lucenenet] NightOwl888 commented on issue #323: Method 'get_Providers' in type 'Lucene.Net.Configuration.ConfigurationRoot' does not have an implementation.

NightOwl888 commented on issue #323:
URL: https://github.com/apache/lucenenet/issues/323#issuecomment-668208832


   Thanks for the report.
   
   What packages do you have from `Microsoft.Extensions.Configuration` installed in your project? And what versions?
   
   I was able to reproduce this. I still need to look into why this is happening. The `Providers` property hasn't changed from `IEnumerable<IConfigurationProvider>`, so it is a bit odd that it is throwing an exception.
   
   Fortunately, this time there is a workaround. You can bypass the `ConfigurationRoot` provider by injecting your own at application startup. Just provide your existing `IConfiguration` instance to `ConfigurationFactory`, or use the below code as the default.
   
   ```c#
   IConfiguration configuration = new ConfigurationBuilder().AddEnvironmentVariables("lucene:").Build();
   
   Lucene.Net.Configuration.ConfigurationSettings.SetConfigurationFactory(new ConfigurationFactory(configuration));
   ```
   
   Here is one way to implement `ConfigurationFactory`. You could alternatively use a `Func<IConfiguration>` in the constructor and actively read it on the fly from its source if you need to.
   
   ```c#
       public class ConfigurationFactory : Lucene.Net.Configuration.IConfigurationFactory
       {
           private readonly IConfiguration configuration;
   
           public ConfigurationFactory(IConfiguration configuration)
           {
               this.configuration = configuration ?? throw new ArgumentNullException(nameof(configuration));
           }
   
           public IConfiguration GetConfiguration() => configuration;
       }
   ```
   
   
   
   


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org