Skip to content

Releases: IGood/boilerplatezero

Release v2.0.0

06 Feb 18:06
Compare
Choose a tag to compare

Updated implementations to use IIncrementalGenerator.
This should be an overall performance improvement.
No functionality has changed.
A few other changes were made for optimizations & code maintenance.

Starting with this version, Visual Studio versions lower than VS2022 are no longer supported because the source generators have been reimplemented as IIncrementalGenerator instead of ISourceGenerator.
Version 1.* of this package should be used with VS2019.

Release v2.0.0-beta

06 Feb 09:06
403656b
Compare
Choose a tag to compare
Release v2.0.0-beta Pre-release
Pre-release

Updated implementations to use IIncrementalGenerator.
This should be an overall performance improvement.
No functionality has changed, but this means older versions of VS are not supported (they should continue to use the v1 releases of this source generator).

Also, a few other changes for code maintenance, optimizations, & dependency updates.

Release v1.8.0

06 Jun 07:30
74c3bd8
Compare
Choose a tag to compare

Added support for validation (#17).
For a property named Foo, a method named IsValidFoo will be used (if it exists) by the property to perform validation.
See property features section in the readme for more details.

Added more generated documentation for "Gen" methods - now has info about associated methods/events for validation, coercion, & changes.

Release v1.7.2

23 May 03:40
c625874
Compare
Choose a tag to compare

fix for #18 - generated members always have documentation so the compiler doesn't complain at you

Release v1.7.1

16 Oct 23:15
db0cc9e
Compare
Choose a tag to compare

fix for #15 wherein generated documentation didn't do the correct thing for references to constructed generic types

Release v1.7.0

21 Jul 20:11
8f32853
Compare
Choose a tag to compare

If the name of a routed event matches the name of a dependency property, then it is a candidate for use the property's generated change-handler.

Example:

public static readonly DependencyProperty SeasonProperty = Gen.Season("summer");

// This event will be raised whenever the `Season` property changes because its name matches.
public static readonly RoutedEvent SeasonChangedEvent = Gen.SeasonChanged<string>();

Release v1.6.0

06 Jul 23:43
1ea6309
Compare
Choose a tag to compare
  • BPZ does routed events!
    Similar to dependency properties, routed events will be registered & implemented when static read-only fields are setup correctly.
    The type of the event handler & the routing strategy can be specified if necessary (see readme for more details).

Write this, not that:

// 👩‍💻 👍 Write this (using BPZ):
public static readonly RoutedEvent SeasonChangedEvent = Gen.SeasonChanged<string>();

// 👩‍💻 👎 Not that (idiomatic implementation):
public static readonly RoutedEvent SeasonChangedEvent = EventManager.RegisterRoutedEvent(nameof(SeasonChanged), RoutingStrategy.Direct, typeof(RoutedPropertyChangedEventHandler<string>), typeof(MyClass));
public event RoutedPropertyChangedEventHandler<string> SeasonChanged
{
    add => this.AddHandler(FooChangedEvent, value);
    remove => this.RemoveHandler(FooChangedEvent, value);
}

Release v1.5.2

04 Jul 00:19
4d77ebf
Compare
Choose a tag to compare

no functional changes; minor updates to formatting of generated code

Release v1.5.1

26 Jun 20:02
149c952
Compare
Choose a tag to compare
  • minor update to formatting of generated code (added some indentation that was missing)
  • properly checks for cancellation during code gen.

Release v1.5.0

13 Jun 23:23
d648c67
Compare
Choose a tag to compare

Added support for FrameworkPropertyMetadataOptions flags.
These flags may be specified with or without a property's default value, allowing for usage like...

// 👩‍💻 user

// No default value is provided, will be implemented using the default value for the generic type argument.
// In this case: `default(string?)` (which resolves to `null`).
public static readonly DependencyProperty TextProperty = Gen.Text<string?>(
    FrameworkPropertyMetadataOptions.BindsTwoWayByDefault);

// Default value argument is provided, as well as a flags argument.
public static readonly DependencyProperty ErrorBrushProperty = GenAttached.ErrorBrush<Brush>(
    Brushes.Red,
    FrameworkPropertyMetadataOptions.Inherits);