Skip to content

Commit 5b5caf0

Browse files
committed
Implemented formatting/parsing via default interface implementations and (.NET 10+) extension members.
Prepared outcommented precompiler directives for a .NET 10 patch upgrade, to reduce assembly bloat then. Also corrected how formattable/parsable is determined based on wrapped types. Also fixed a few bugs.
1 parent b53bf34 commit 5b5caf0

27 files changed

+1414
-315
lines changed

DomainModeling.Example/DomainModeling.Example.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
<Project Sdk="Microsoft.NET.Sdk">
1+
<Project Sdk="Microsoft.NET.Sdk">
22

33
<PropertyGroup>
44
<OutputType>Exe</OutputType>
5-
<TargetFramework>net8.0</TargetFramework>
5+
<TargetFramework>net9.0</TargetFramework>
66
<AssemblyName>Architect.DomainModeling.Example</AssemblyName>
77
<RootNamespace>Architect.DomainModeling.Example</RootNamespace>
88
<Nullable>Enable</Nullable>

DomainModeling.Generator/Configurators/DomainModelConfiguratorGenerator.Identities.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,9 @@ namespace Architect.DomainModeling.Generator.Configurators;
55

66
public partial class DomainModelConfiguratorGenerator
77
{
8-
internal static void GenerateSourceForIdentities(SourceProductionContext context, (ImmutableArray<IdentityGenerator.Generatable> Generatables, (bool HasConfigureConventions, string AssemblyName) Metadata) input)
8+
internal static void GenerateSourceForIdentities(
9+
SourceProductionContext context,
10+
(ImmutableArray<ValueWrapperGenerator.BasicGeneratable> Generatables, (bool HasConfigureConventions, string AssemblyName) Metadata) input)
911
{
1012
context.CancellationToken.ThrowIfCancellationRequested();
1113

@@ -16,7 +18,7 @@ internal static void GenerateSourceForIdentities(SourceProductionContext context
1618
var targetNamespace = input.Metadata.AssemblyName;
1719

1820
var configurationText = String.Join($"{Environment.NewLine}\t\t\t", input.Generatables.Select(generatable => $"""
19-
configurator.ConfigureIdentity<{generatable.ContainingNamespace}.{generatable.IdTypeName}, {generatable.UnderlyingTypeFullyQualifiedName}>({Environment.NewLine} new {Constants.DomainModelingNamespace}.Configuration.IIdentityConfigurator.Args());
21+
configurator.ConfigureIdentity<{generatable.ContainingNamespace}.{generatable.TypeName}, {generatable.UnderlyingTypeFullyQualifiedName}>({Environment.NewLine} new {Constants.DomainModelingNamespace}.Configuration.IIdentityConfigurator.Args());
2022
"""));
2123

2224
var source = $@"

DomainModeling.Generator/Configurators/DomainModelConfiguratorGenerator.WrapperValueObjects.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,9 @@ namespace Architect.DomainModeling.Generator.Configurators;
55

66
public partial class DomainModelConfiguratorGenerator
77
{
8-
internal static void GenerateSourceForWrapperValueObjects(SourceProductionContext context, (ImmutableArray<WrapperValueObjectGenerator.Generatable> Generatables, (bool HasConfigureConventions, string AssemblyName) Metadata) input)
8+
internal static void GenerateSourceForWrapperValueObjects(
9+
SourceProductionContext context,
10+
(ImmutableArray<ValueWrapperGenerator.BasicGeneratable> Generatables, (bool HasConfigureConventions, string AssemblyName) Metadata) input)
911
{
1012
context.CancellationToken.ThrowIfCancellationRequested();
1113

DomainModeling.Generator/Configurators/EntityFrameworkConfigurationGenerator.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -404,7 +404,7 @@ public override InstantiationBinding With(IReadOnlyList<ParameterBinding> parame
404404
AddSource(context, source, "EntityFrameworkDomainModelConfigurationExtensions", $"{Constants.DomainModelingNamespace}.EntityFramework");
405405
}
406406

407-
internal sealed record Generatable : IGeneratable
407+
internal sealed record Generatable
408408
{
409409
public bool UsesEntityFrameworkConventions { get; set; }
410410
/// <summary>

DomainModeling.Generator/DomainEventGenerator.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@ private static bool FilterSyntaxNode(SyntaxNode node, CancellationToken cancella
3939

4040
private static Generatable? TransformSyntaxNode(GeneratorSyntaxContext context, CancellationToken cancellationToken = default)
4141
{
42+
cancellationToken.ThrowIfCancellationRequested();
43+
4244
var model = context.SemanticModel;
4345
var tds = (TypeDeclarationSyntax)context.Node;
4446
var type = model.GetDeclaredSymbol(tds);
@@ -101,7 +103,7 @@ internal enum DomainEventTypeComponents : ulong
101103
DefaultConstructor = 1 << 1,
102104
}
103105

104-
internal sealed record Generatable : IGeneratable
106+
internal sealed record Generatable
105107
{
106108
public bool IsDomainObject { get; set; }
107109
public string TypeName { get; set; } = null!;

DomainModeling.Generator/DummyBuilderGenerator.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@ private static bool FilterSyntaxNode(SyntaxNode node, CancellationToken cancella
3434

3535
private static Builder? TransformSyntaxNode(GeneratorSyntaxContext context, CancellationToken cancellationToken = default)
3636
{
37+
cancellationToken.ThrowIfCancellationRequested();
38+
3739
var model = context.SemanticModel;
3840
var tds = (TypeDeclarationSyntax)context.Node;
3941
var type = model.GetDeclaredSymbol((TypeDeclarationSyntax)context.Node);
@@ -334,7 +336,7 @@ namespace {containingNamespace}
334336
return result;
335337
}
336338

337-
private sealed record Builder : IGeneratable
339+
private sealed record Builder
338340
{
339341
public string TypeFullMetadataName { get; set; } = null!;
340342
public string ModelTypeFullMetadataName { get; set; } = null!;

DomainModeling.Generator/EntityGenerator.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@ private static bool FilterSyntaxNode(SyntaxNode node, CancellationToken cancella
3939

4040
private static Generatable? TransformSyntaxNode(GeneratorSyntaxContext context, CancellationToken cancellationToken = default)
4141
{
42+
cancellationToken.ThrowIfCancellationRequested();
43+
4244
var model = context.SemanticModel;
4345
var tds = (TypeDeclarationSyntax)context.Node;
4446
var type = model.GetDeclaredSymbol(tds);
@@ -101,7 +103,7 @@ internal enum EntityTypeComponents : ulong
101103
DefaultConstructor = 1 << 1,
102104
}
103105

104-
internal sealed record Generatable : IGeneratable
106+
internal sealed record Generatable
105107
{
106108
public bool IsEntity { get; set; }
107109
public string TypeName { get; set; } = null!;

DomainModeling.Generator/IGeneratable.cs renamed to DomainModeling.Generator/GeneratableExtensions.cs

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,7 @@
11
using System.Runtime.CompilerServices;
2-
using Microsoft.CodeAnalysis;
32

43
namespace Architect.DomainModeling.Generator;
54

6-
/// <summary>
7-
/// <para>
8-
/// Interface intended for record types used to store the transformation data of source generators.
9-
/// </para>
10-
/// <para>
11-
/// Extension methods on this type allow additional data (such as an <see cref="INamedTypeSymbol"/>) to be associated, without that data becoming part of the record's equality implementation.
12-
/// </para>
13-
/// </summary>
14-
internal interface IGeneratable
15-
{
16-
}
17-
185
internal static class GeneratableExtensions
196
{
207
/// <summary>

0 commit comments

Comments
 (0)