You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: DomainModeling/DomainModeling.csproj
+10-41Lines changed: 10 additions & 41 deletions
Original file line number
Diff line number
Diff line change
@@ -54,50 +54,19 @@ Performance:
54
54
- Enhancement: Reduced assembly size by having source-generated WrapperValueObject/Identity types use generic JSON serializers instead of generating their own.
- Semi-breaking: IFormattable & co for string wrappers have stopped treating null strings as "", as this could cover up mistakes instead of revealing them.
58
59
- Semi-breaking: IIdentity now implements IWrapperValueObject.
59
-
- Semi-breaking: I[Utf8][Span]Formattable implementations based on strings have stopped treating null strings as "", as this could cover up mistakes instead of revealing them.
60
-
- Bug fix: Fixed a bug where source-generated records would always generate ToString()/Equals()/GetHashCode(), even if you wrote your own.
61
-
- Bug fix: Fixed a bug where source-generated WrapperValueObject/Identity types would not recognize manual member implementations if they were explicit interface implementations.
62
-
- Bug fix: Fixed a bug where the DummyBuilder generator struggled with nested types.
63
-
- Bug fix: Fixed a bug where the analyzer would not properly warn that source generation on nested types is unsupported.
- Feature: Analyzer warns when '==' or similar operator implicitly casts some IValueObject to something else. This avoids accidentally comparing unrelated types.
62
+
- Fix: Fixed bug where source-generated records would always generate ToString()/Equals()/GetHashCode(), even if you wrote your own.
63
+
- Fix: Fixed bug where source-generated Wrappers/Identities would not recognize manual member implementations if they were explicit interface implementations.
64
+
- Fix: Fixed bug where DummyBuilder generator struggled with nested types.
65
+
- Fix: Fixed bug where "no source generation on nested type" warning would not show.
66
+
- Enhancement: Generated types now have the CompilerGeneratedAttribute.
67
+
- Enhancement: Generated struct Wrappers/Identities now generate NULLABLE comparison operators, to circumvent counterintuitive lifting behavior.
64
68
- Enhancement: Improved clarity of analyzer warnings, by stopping before subsequent problems occur.
65
69
- Enhancement: Improved correctness of trimming.
66
-
67
-
3.0.3:
68
-
69
-
- Enhancement: Upgraded package versions.
70
-
71
-
3.0.2:
72
-
73
-
- Bug fix.
74
-
75
-
3.0.1:
76
-
77
-
- Bug fix.
78
-
79
-
3.0.0:
80
-
81
-
- BREAKING: Platform support: Dropped support for .NET 5.0 (EOL).
82
-
- BREAKING: Marker attributes: [SourceGenerated] attribute is refactored into [Entity], [ValueObject], [WrapperValueObject<TValue>], etc. Obsolete marking helps with migrating.
83
-
- BREAKING: DummyBuilder base class: The DummyBuilder<TModel, TModelBuilder> base class is deprecated in favor of the new [DummyBuilder<TModel>] attribute. Obsolete marking helps with migrating.
84
-
- BREAKING: Private ctors: Source-generated ValueObject types now generate a private default ctor with [JsonConstructor], for logic-free deserialization. This may break deserialization if properties lack an init/set. Analyzer included.
85
-
- BREAKING: Init properties: A new analyzer warns if a WrapperValueObject's Value property lacks an init/set, because logic-free deserialization then requires a workaround.
86
-
- BREAKING: ISerializableDomainObject interface: Wrapper value objects and identities now require the new ISerializableDomainObject<TModel, TValue> interface (generated automatically).
87
-
- Feature: Custom inheritance: Source generation with custom base classes is now easy, with marker attributes identifying the concrete types.
88
-
- Feature: Optional inheritance: For source-generated value objects, wrappers, and identities, the base type or interface is generated and can be omitted.
89
-
- Feature: DomainObjectSerializer (.NET 7+): The new DomainObjectSerializer type can be used to (de)serialize identities and wrappers without running any domain logic (such as parameterized ctors), and customizable per type.
90
-
- Feature: Entity Framework mappings (.NET 7+): If Entity Framework is used, mappings by convention (that also bypass ctors) can be generated. Override DbContext.ConfigureConventions() and call ConfigureDomainModelConventions(). Its action param allows all identities, wrapper value objects, entities, and/or domain events to be mapped, even in a trimmer-safe way.
91
-
- Feature: Miscellaneous mappings: Other third party components can similarly map domain objects. See the readme.
92
-
- Feature: Marker attributes: Non-partial types with the new marker attributes skip source generation, but can still participate in mappings.
93
-
- Feature: Record struct identities: Explicitly declared identity types now support "record struct", allowing their curly braces to be omitted: `public partial record struct GeneratedId;`
94
-
- Feature: ValueObject validation helpers: Added ValueObject.ContainsNonPrintableCharactersOrDoubleQuotes(), a common validation requirement for proper names.
95
-
- Feature: Formattable and parsable interfaces (.NET 7+): Generated identities and wrappers now implement IFormattable, IParsable<TSelf>, ISpanFormattable, and ISpanParsable<TSelf>, recursing into the wrapped type's implementation.
96
-
- Feature: UTF-8 formattable and parsable interfaces (.NET 8+): Generated identities and wrappers now implement IUtf8SpanFormattable and IUtf8SpanParsable<TSelf>, recursing into the wrapped type's implementation.
97
-
- Enhancement: JSON converters (.NET 7+): All generated JSON converters now pass through the new Serialize() and Deserialize() methods, for customizable and logic-free (de)serialization.
98
-
- Enhancement: JSON converters (.NET 7+): ReadAsPropertyName() and WriteAsPropertyName() in generated JSON converters now recurse into the wrapped type's converter and also pass through the new Serialize() and Deserialize() methods.
99
-
- Bug fix: IDE stability: Fixed a compile-time bug that could cause some of the IDE's features to crash, such as certain analyzers.
100
-
- Minor feature: Additional interfaces: IEntity and IWrapperValueObject<TValue> interfaces are now available.
0 commit comments