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);