ConfigurationBuilder для Core Api из устаревшего приложения dotnet framework 4.7.1

Пытаясь создать IConfigurationRoot type, чтобы использовать Core 2.2 Api из устаревшего файла конфигурации приложения WPF Framework 4.7.1 WPF.

myCoreApiController.CoreApiMethod( confirutation); // (IConfigurationRoot configuration)

Сначала определите словарь и загрузите его с ключами, которые идентифицируют настройки и значения вашей конфигурации (фактические настройки). Этот код выглядит так:

var settings = new Dictionary<string, string> 
{  
    {"toDoService:url", "http://..."},  
    {"toDoService:contractid", "???"}   
}; 

Затем создал ConfigurationBuilder, добавьте к нему мой Словарь параметров конфигурации и используйте его ConfigurationBuilder построить IConfiguration объект.

Вот этот код:

var cfgBuilder = new ConfigurationBuilder();
cfgBuilder.AddInMemoryCollection(settings);
IConfiguration cfg = cfgBuilder.Build();

Но ConfigurationBuilderтакже является интерфейсом. Поэтому я не могу создать такой экземпляр. Затем я попытался реализовать это и создать свой, но не смог переопределитьAddInMemoryCollectionстатический метод. Итак, верхнее решение не работает.

Обратите внимание, что в проекте установлены NuGet Microsoft.Extensions.Configuration, Microsoft.Extensions.Configuration.Abstractions.

Надеюсь, кто-нибудь поделится своим способом достижения этого.

1 ответ

Я только что столкнулся с этой "проблемой". Моя проблема заключалась в том, что у меня было:

using System.Configuration;

но мне нужно:

using Microsoft.Extensions.Configuration;

ConfigurationBuilder.Build метод возвращает IConfigurationRoot, который получен из IConfiguration

но в своем коде вы назначаете встроенную конфигурацию IConfiguration

IConfiguration cfg = cfgBuilder.Build();

было указано, что целевой метод определяется как

CoreApiMethod(IConfigurationRoot configuration);

Проблема заключается в том, чтобы пройти назначенный IConfiguration в целевую функцию как IConfigurationRoot.

При присвоении переменной используйте соответствующий тип.

var settings = new Dictionary<string, string> { 
    {"toDoService:url", "http://..."},  
    {"toDoService:contractid", "???"}   
}; 

IConfigurationRoot configuration = new ConfigurationBuilder()
    .AddInMemoryCollection(settings)
    .Build();

myCoreApiController.CoreApiMethod(confirutation); 
Другие вопросы по тегам