From f0b59b84b7a5351416156365b8dc2ac0e6efe257 Mon Sep 17 00:00:00 2001 From: "Simon G." Date: Wed, 3 Dec 2025 10:11:19 +0100 Subject: [PATCH] - use correct types for async resolve --- .../FactoryGenerator.cs | 22 ++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/LightweightIocContainer.FactoryGenerator/FactoryGenerator.cs b/LightweightIocContainer.FactoryGenerator/FactoryGenerator.cs index bf460a5..125cffd 100644 --- a/LightweightIocContainer.FactoryGenerator/FactoryGenerator.cs +++ b/LightweightIocContainer.FactoryGenerator/FactoryGenerator.cs @@ -186,7 +186,16 @@ public class FactoryGenerator : IIncrementalGenerator if (!method.ReturnsVoid) //create method { - stringBuilder.Append($"{INDENT}public {method.ReturnType.Name} {method.Name}"); + stringBuilder.Append($"{INDENT}public "); + stringBuilder.Append(method.ReturnType.Name); + + if (method.ReturnType.Name == "Task") + { + if (method.ReturnType is INamedTypeSymbol { IsGenericType: true } namedTypeSymbol) + stringBuilder.Append($"<{string.Join(", ", namedTypeSymbol.TypeArguments.Select(a => a.Name))}>"); + } + + stringBuilder.Append($" {method.Name}"); if (method.IsGenericMethod) stringBuilder.Append($"<{string.Join(", ", method.TypeParameters.Select(p => p.Name))}>"); @@ -216,8 +225,15 @@ public class FactoryGenerator : IIncrementalGenerator stringBuilder.AppendLine(); } - if (method.IsAsync) - stringBuilder.Append($"{INDENT}{INDENT}return await container.ResolveAsync<>("); //TODO: Get return type from Task<> + if (method.ReturnType.Name == "Task") + { + stringBuilder.Append($"{INDENT}{INDENT}return container.ResolveAsync"); + + if (method.ReturnType is INamedTypeSymbol { IsGenericType: true } namedTypeSymbol) + stringBuilder.Append($"<{string.Join(", ", namedTypeSymbol.TypeArguments.Select(a => a.Name))}>"); + + stringBuilder.Append("("); + } else stringBuilder.Append($"{INDENT}{INDENT}return container.Resolve<{method.ReturnType.Name}>(");