Skip to content

Commit 5e4bb9f

Browse files
committed
fix don't work ConfigureContainer without call ConfigureServices
1 parent 80f85f2 commit 5e4bb9f

File tree

4 files changed

+18
-15
lines changed

4 files changed

+18
-15
lines changed

ReadMe.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1239,8 +1239,10 @@ If you want to use other DI container(like [DryIoc](https://github.com/dadhi/Dry
12391239
// dotnet add package DryIoc.Microsoft.DependencyInjection
12401240
var app = ConsoleApp.Create()
12411241
// setup DryIoc as the DI container
1242-
.ConfigureContainer(new DryIocServiceProviderFactory())
1243-
.ConfigureServices(services => services.AddSingleton<MyService>());
1242+
.ConfigureContainer(new DryIocServiceProviderFactory(), container =>
1243+
{
1244+
container.Register<MyService>();
1245+
});
12441246

12451247
app.Add("", ([FromServices] MyService service) => { });
12461248

sandbox/GeneratorSandbox/GeneratorSandbox.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="9.0.6" />
2121
<PackageReference Include="DryIoc.Microsoft.DependencyInjection" Version="6.2.0" />
2222

23-
<!--<PackageReference Include="Microsoft.Extensions.Hosting" Version="9.0.6" />-->
23+
<PackageReference Include="Microsoft.Extensions.Hosting" Version="9.0.6" />
2424
<!--
2525
<PackageReference Include="Microsoft.Extensions.Logging" Version="9.0.6" />
2626
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="9.0.6" />

sandbox/GeneratorSandbox/Program.cs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,19 @@
22
using DryIoc.Microsoft.DependencyInjection;
33
using Microsoft.Extensions.DependencyInjection;
44
using System.Threading.Tasks.Dataflow;
5+
using DryIoc;
56

67
// args = "some-command hello --global-flag flag-value -- more args here".Split(" ");
78

89
var app = ConsoleApp.Create()
910
// setup DryIoc as the DI container
10-
.ConfigureContainer(new DryIocServiceProviderFactory())
11-
.ConfigureServices(services => services.AddSingleton<MyService>());
11+
.ConfigureContainer(new DryIocServiceProviderFactory(), container =>
12+
{
13+
container.Register<MyService>();
14+
});
1215

13-
app.Add("", ([FromServices] MyService service) => { });
16+
app.UseFilter<MyFilter>();
17+
app.Add("", ([FromServices] MyService service) => service.Test());
1418

1519
app.Run(args);
1620

src/ConsoleAppFramework/Emitter.cs

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -855,6 +855,7 @@ public void EmitConfigure(SourceBuilder sb, DllReference dllReference)
855855
sb.AppendLine();
856856
using (sb.BeginBlock("public ConsoleApp.ConsoleAppBuilder ConfigureContainer<TContainerBuilder>(IServiceProviderFactory<TContainerBuilder> factory, Action<TContainerBuilder>? configure = null) where TContainerBuilder : notnull"))
857857
{
858+
sb.AppendLine("this.isRequireCallBuildAndSetServiceProvider = true;");
858859
using (sb.BeginBlock("createServiceProvider = services =>"))
859860
{
860861
sb.AppendLine("var containerBuilder = factory.CreateBuilder(services);");
@@ -936,17 +937,13 @@ public void EmitConfigure(SourceBuilder sb, DllReference dllReference)
936937
// Build
937938
using (sb.BeginBlock("partial void BuildAndSetServiceProvider(ConsoleAppContext context)"))
938939
{
939-
if (dllReference.HasDependencyInjection && dllReference.HasLogging)
940-
{
941-
sb.AppendLine("if (configureServices == null && configureLogging == null) return;");
942-
}
943-
else if (dllReference.HasDependencyInjection)
944-
{
945-
sb.AppendLine("if (configureServices == null) return;");
946-
}
947-
948940
if (dllReference.HasDependencyInjection)
949941
{
942+
using(sb.BeginBlock("if (!isRequireCallBuildAndSetServiceProvider)"))
943+
{
944+
sb.AppendLine("return;");
945+
}
946+
950947
if (dllReference.HasConfiguration)
951948
{
952949
sb.AppendLine("var config = configuration;");

0 commit comments

Comments
 (0)