Skip to content

Commit 09760f1

Browse files
committed
Shortened release notes
1 parent 009f13c commit 09760f1

File tree

1 file changed

+10
-41
lines changed

1 file changed

+10
-41
lines changed

DomainModeling/DomainModeling.csproj

Lines changed: 10 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -54,50 +54,19 @@ Performance:
5454
- Enhancement: Reduced assembly size by having source-generated WrapperValueObject/Identity types use generic JSON serializers instead of generating their own.
5555
- Enhancement: Improved source generator performance.
5656

57-
Misc improvements:
57+
Misc:
58+
- Semi-breaking: IFormattable & co for string wrappers have stopped treating null strings as "", as this could cover up mistakes instead of revealing them.
5859
- 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.
60+
- Feature: Non-generic Wrapper/Identity interfaces.
61+
- 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.
6468
- Enhancement: Improved clarity of analyzer warnings, by stopping before subsequent problems occur.
6569
- 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.
10170
</Description>
10271
<Copyright>The Architect</Copyright>
10372
<Company>The Architect</Company>

0 commit comments

Comments
 (0)