Compare commits

..

No commits in common. '062b01582da0fa90d7f77befc6886203d6cc0e1b' and 'ff1eb813f0a0fbc04cb2f6bf4869a04dd2259631' have entirely different histories.

  1. 10
      LightweightIocContainer.FactoryGenerator/FactoryGenerator.cs
  2. 2
      LightweightIocContainer.FactoryGenerator/LightweightIocContainer.FactoryGenerator.csproj
  3. 2
      LightweightIocContainer.Validation/LightweightIocContainer.Validation.csproj
  4. 2
      LightweightIocContainer/LightweightIocContainer.csproj

@ -101,7 +101,7 @@ public class FactoryGenerator : IIncrementalGenerator
private void GenerateFactory(SourceProductionContext context, ImmutableArray<ITypeSymbol?> types) private void GenerateFactory(SourceProductionContext context, ImmutableArray<ITypeSymbol?> types)
{ {
foreach (ITypeSymbol typeSymbol in GetDistinctTypes(types, true)) foreach (ITypeSymbol typeSymbol in GetDistinctTypes(types))
context.AddSource($"Generated{typeSymbol.Name}.g.cs", GenerateFactorySourceCode(typeSymbol)); context.AddSource($"Generated{typeSymbol.Name}.g.cs", GenerateFactorySourceCode(typeSymbol));
} }
@ -130,10 +130,12 @@ public class FactoryGenerator : IIncrementalGenerator
stringBuilder.AppendLine($"{INDENT}public TFactory Create<TFactory>(IocContainer container)"); stringBuilder.AppendLine($"{INDENT}public TFactory Create<TFactory>(IocContainer container)");
stringBuilder.AppendLine($"{INDENT}{{"); stringBuilder.AppendLine($"{INDENT}{{");
foreach (ITypeSymbol type in GetDistinctTypes(types, false)) foreach (ITypeSymbol type in GetDistinctTypes(types))
{ {
stringBuilder.AppendLine($"{INDENT}{INDENT}if (typeof(TFactory) == typeof({GetTypeText(type, false)}))"); stringBuilder.AppendLine($"{INDENT}{INDENT}if (typeof(TFactory) == typeof({GetTypeText(type, false)}))");
stringBuilder.AppendLine($"{INDENT}{INDENT}{{");
stringBuilder.AppendLine($"{INDENT}{INDENT}{INDENT}return (TFactory) (object) new Generated{GetTypeText(type, false)}(container);"); stringBuilder.AppendLine($"{INDENT}{INDENT}{INDENT}return (TFactory) (object) new Generated{GetTypeText(type, false)}(container);");
stringBuilder.AppendLine($"{INDENT}{INDENT}}}");
stringBuilder.AppendLine(); stringBuilder.AppendLine();
} }
@ -253,7 +255,7 @@ public class FactoryGenerator : IIncrementalGenerator
return stringBuilder.ToString(); return stringBuilder.ToString();
} }
private IEnumerable<ITypeSymbol> GetDistinctTypes(ImmutableArray<ITypeSymbol?> types, bool distinctByName) private IEnumerable<ITypeSymbol> GetDistinctTypes(ImmutableArray<ITypeSymbol?> types)
{ {
List<ITypeSymbol> distinctTypes = []; List<ITypeSymbol> distinctTypes = [];
foreach (ITypeSymbol? typeSymbol in types) foreach (ITypeSymbol? typeSymbol in types)
@ -264,7 +266,7 @@ public class FactoryGenerator : IIncrementalGenerator
if (distinctTypes.Contains(typeSymbol, SymbolEqualityComparer.IncludeNullability)) if (distinctTypes.Contains(typeSymbol, SymbolEqualityComparer.IncludeNullability))
continue; continue;
if (distinctByName && distinctTypes.Any(t => t.Name == typeSymbol.Name)) if (distinctTypes.Any(t => t.Name == typeSymbol.Name))
continue; continue;
distinctTypes.Add(typeSymbol); distinctTypes.Add(typeSymbol);

@ -12,7 +12,7 @@
<EnforceExtendedAnalyzerRules>true</EnforceExtendedAnalyzerRules> <EnforceExtendedAnalyzerRules>true</EnforceExtendedAnalyzerRules>
<IsRoslynComponent>true</IsRoslynComponent> <IsRoslynComponent>true</IsRoslynComponent>
<VersionPrefix>5.0.0</VersionPrefix> <VersionPrefix>5.0.0</VersionPrefix>
<VersionSuffix>beta5</VersionSuffix> <VersionSuffix>beta4</VersionSuffix>
</PropertyGroup> </PropertyGroup>
<PropertyGroup> <PropertyGroup>

@ -11,7 +11,7 @@
<ImplicitUsings>enable</ImplicitUsings> <ImplicitUsings>enable</ImplicitUsings>
<DocumentationFile>LightweightIocContainer.Validation.xml</DocumentationFile> <DocumentationFile>LightweightIocContainer.Validation.xml</DocumentationFile>
<VersionPrefix>5.0.0</VersionPrefix> <VersionPrefix>5.0.0</VersionPrefix>
<VersionSuffix>beta5</VersionSuffix> <VersionSuffix>beta4</VersionSuffix>
</PropertyGroup> </PropertyGroup>
<PropertyGroup> <PropertyGroup>

@ -11,7 +11,7 @@
<ImplicitUsings>enable</ImplicitUsings> <ImplicitUsings>enable</ImplicitUsings>
<DocumentationFile>LightweightIocContainer.xml</DocumentationFile> <DocumentationFile>LightweightIocContainer.xml</DocumentationFile>
<VersionPrefix>5.0.0</VersionPrefix> <VersionPrefix>5.0.0</VersionPrefix>
<VersionSuffix>beta5</VersionSuffix> <VersionSuffix>beta4</VersionSuffix>
</PropertyGroup> </PropertyGroup>
<PropertyGroup> <PropertyGroup>

Loading…
Cancel
Save