Как получить IConfiguration для внедрения зависимостей в консольном приложении C# .NETC#

Место общения программистов C#
Ответить
Anonymous
 Как получить IConfiguration для внедрения зависимостей в консольном приложении C# .NET

Сообщение Anonymous »

У меня есть код из веб-приложения Asp.Net Core 5, который я хочу вызвать из консольного приложения.
Все собирается вместе, но у меня есть одна проблема, решение которой я еще не нашел. Учитывая основной код консоли:

Код: Выделить всё

class Program
{
static void Main(string[] args)
{
var serviceCollection = new ServiceCollection();
ConfigureServices(serviceCollection);
var serviceProvider = serviceCollection.BuildServiceProvider();

serviceProvider.GetService().Generate();
}

private static void ConfigureServices(IServiceCollection serviceCollection)
{
var configurationRoot = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appSettings.json", false)
.Build();

serviceCollection.AddOptions();
serviceCollection.Configure(configurationRoot.GetSection("Configuration"));

// add services
serviceCollection.AddScoped()
.AddScoped();
}
}
И класс, который выполняет эту работу:

Код: Выделить всё

public class CodeGen
{
private readonly IDataRepo _dataRepo;
private readonly AppSettings _appSettings;

public CodeGen(IDataRepo dataRepo, AppSettings appSettings)
{
_dataRepo    = dataRepo;
_appSettings = appSettings;
}

public void Generate()
{
Console.WriteLine("Generates code... ");

CodeGenWordRules.Init(_appSettings.OutputFolder, _dataRepo);
}
}
Проблема в том, что конструктор DataRepo зависит от IConfiguration.

Код: Выделить всё

public DataRepo(IConfiguration configuration, ICodeGenManager codeGenManager)
Как мне получить IConfiguration из IConfigurationRoot, который я могу добавить в serviceCollection, чтобы DataRepo имел его зависимость?

Подробнее здесь: https://stackoverflow.com/questions/697 ... et-console
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»