[CLI] Use Microsoft.Extensions.DependencyInjection instead of Stylet

pull/236/head
Alexey Golub 5 years ago
parent 5e0a2c6761
commit 9299b95250

@ -10,8 +10,8 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="CliFx" Version="0.0.5" />
<PackageReference Include="Stylet" Version="1.3.0" />
<PackageReference Include="CliFx" Version="0.0.7" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="3.0.0" />
<PackageReference Include="Tyrrrz.Extensions" Version="1.6.3" />
</ItemGroup>

@ -1,33 +1,42 @@
using System.Threading.Tasks;
using System;
using System.Threading.Tasks;
using CliFx;
using DiscordChatExporter.Cli.Commands;
using DiscordChatExporter.Core.Services;
using StyletIoC;
using Microsoft.Extensions.DependencyInjection;
namespace DiscordChatExporter.Cli
{
public static class Program
{
private static IContainer BuildContainer()
private static IServiceProvider ConfigureServices()
{
var builder = new StyletIoCBuilder();
var services = new ServiceCollection();
// Autobind the .Services assembly
builder.Autobind(typeof(DataService).Assembly);
// Register services
services.AddSingleton<DataService>();
services.AddSingleton<ExportService>();
services.AddSingleton<SettingsService>();
// Bind settings as singleton
builder.Bind<SettingsService>().ToSelf().InSingletonScope();
// Register commands
services.AddTransient<ExportChannelCommand>();
services.AddTransient<ExportDirectMessagesCommand>();
services.AddTransient<ExportGuildCommand>();
services.AddTransient<GetChannelsCommand>();
services.AddTransient<GetDirectMessageChannelsCommand>();
services.AddTransient<GetGuildsCommand>();
services.AddTransient<GuideCommand>();
// Set instance
return builder.BuildContainer();
return services.BuildServiceProvider();
}
public static Task<int> Main(string[] args)
{
var container = BuildContainer();
var serviceProvider = ConfigureServices();
return new CliApplicationBuilder()
.AddCommandsFromThisAssembly()
.UseCommandFactory(schema => (ICommand) container.Get(schema.Type))
.UseCommandFactory(schema => (ICommand) serviceProvider.GetService(schema.Type))
.Build()
.RunAsync(args);
}

Loading…
Cancel
Save