Skip to content

Releases: PawelGerr/Thinktecture.Runtime.Extensions

7.3.0

18 Apr 18:33
bea16c8
Compare
Choose a tag to compare
  • Handling of Nullable<T> should be done by System.Text.Json
  • Non-generic ValueObjectJsonConverterFactory prioritizes JsonConverterAttribute over its own converter (by default)
  • ValueObjectMessageFormatterResolver prioritizes MessagePackFormatterAttribute over its own formatter (by default)

7.2.1

14 Apr 09:44
df3dbaa
Compare
Choose a tag to compare
  • Removed explicit reference to System.Text.Json
  • Dropped support for EF Core 5

7.2.0

31 Jan 18:36
dcd4e25
Compare
Choose a tag to compare
  • System.Text.Json: String-based keyed value objects (and smart enums) can be used as dictionary keys

7.1.0

11 Dec 20:29
4a5e7bd
Compare
Choose a tag to compare
  • Value object ctor visibility can be changed via ConstructorAccessModifier

7.0.0

10 Dec 12:27
6c704ee
Compare
Choose a tag to compare
  • See Migration from v6 to v7
  • [BREAKING] Use SmartEnumAttribute<T> instead of IEnum<T>/IValidatableEnum<T>
  • [BREAKING] Smart Enums and Value Object are using (custom) ValidationError instead of ValidationResult
    • Use ValueObjectValidationErrorAttribute<TError> to define the type of a custom validation error
  • The names of the factory methods Create and TryCreate can be changed.
  • Added support for keyless Smart Enums
  • [BREAKING] Split ValueObjectAttribute in keyed ValueObjectAttribute<T> and ComplexValueObject
    • Key member is implemented by the source generator by default.
    • Key member generation can be disabled via SkipKeyMember
    • Attribute property KeyPropertyName has been renamed to KeyMemberName
    • Key member can be renamed via attribute-property KeyMemberName
    • Access modifier of the key member can be configured via KeyMemberAccessModifier
    • Key member kind can be configured via KeyMemberKind
    • Key member comparers can be configured via ValueObjectKeyMemberComparerAttribute and ValueObjectKeyMemberEqualityComparerAttribute
    • IEnum<TKey>.KeyEqualityComparer has been replaced by ValueObjectKeyMemberEqualityComparerAttribute
    • default (equality) comparer of string-based keyed value object is OrdinalIgnoreCase (as with Smart Enums)
  • Added support for EF Core 8
    • [BREAKING] Renamed extension method AddEnumAndValueObjectConverters to AddValueObjectConverters
  • [C# 12] Analyzer prevents the usage of primary constructors with Smart Enums and Value Objects.
  • Json converter for complex value object uses converters instead of reader/writer, this is approach is better because it supports custom converters.
  • Several performance optimizations

6.5.2

17 Nov 16:59
e5ca209
Compare
Choose a tag to compare
  • [SourceGen] Generate Map/Switch if the number of items is less than 1000

6.5.1

13 Nov 07:24
7ecd860
Compare
Choose a tag to compare
  • Bugfix: [Source Gen] Use ComputeHashCode for collections

6.5.0

13 Nov 07:23
fd838b2
Compare
Choose a tag to compare
  • Added ValueObjectFactoryAttribute to create another factory method
    • ValueObjectFactoryAttribute can alter the serialization
    • Added new interface IValueObjectFactory with method Validate having parameter of type IFormatProvider
    • Added new interface IValueObjectConverter with method ToValue
  • ValueObjectModelBinderProvider looks for a string-based IValueObjectFactory before falling back to the type of the key-property
  • Added combination out of AllowNull and NotNull to not-nullable reference parameters of ValidateFactoryArguments to ensures that the value is validated/handled by the developer

6.4.1

09 Nov 12:20
70a32fa
Compare
Choose a tag to compare
  • Bugfix: Source gen should regenerate the code if SkipToString, SkipSwitchMethods or SkipMapMethods change their values.

7.0.0-beta04

07 Nov 22:48
fa7ce89
Compare
Choose a tag to compare
7.0.0-beta04 Pre-release
Pre-release
  • Added ValueObjectFactoryAttribute to create another factory method, which can alter the serialization as well
  • Moved method Validate to a new interface IValueObjectFactory and added a new parameter of type IFormatProvider
  • ValueObjectModelBinderProvider looks for a string-based IValueObjectFactory before falling back to the type of the key-property
  • ValueObjectFactoryAttribute can alter the serialization
  • Moved the method GetKey from IKeyedValueObject to IValueObjectConverter and renamed it to ToValue