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:
[email protected]


Reply via email to