1.1.0-beta.4
betaUn changement de licence que chaque consommateur devrait lire, un paramètre composé désormais tiré via son propre générateur, et une longue liste de corrections de lecture de gardes — plusieurs d'entre elles closant les limitations connues livrées avec 1.1.0-beta.3.
⚠️ Changements majeurs
- JustDummies est désormais sous licence PolyForm Internal Use 1.0.0 ouvre un nouvel onglet, et non plus Apache 2.0 — source disponible, pas open source. Vous pouvez lire, construire, modifier et exécuter l'outil pour vos propres opérations internes ou celles de votre entreprise ; vous ne pouvez pas redistribuer le logiciel. Les versions déjà publiées sur NuGet ne sont pas concernées et conservent la licence sous laquelle elles ont été livrées. Les contributions sont désormais régies par un Contributor Agreement ouvre un nouvel onglet.
- Un paramètre composé est désormais généré comme
new AnyOrderReference()— le générateur que son propre type possède — au lieu d'une recette dérivée des gardes de sa factory et recopiée à chaque site d'appel. Là où la compilation cible ne porte pas encore ce générateur,CS0246à cette ligne nomme ce qu'il faut générer (ADR-0089 ouvre un nouvel onglet). - L'appel pour un paramètre composé va désormais directement dans l'initialiseur du constructeur, et toute factory restante est renommée d'après ce qu'elle retourne —
AnyValidQuantity()plutôt queQuantityFactory(). - Un paramètre de type valeur nullable est désormais généré comme
.AsNullable(), et non plus.As(value => (T?)value)— nécessite une version deJustDummiesportantAsNullable()(ADR-0094 ouvre un nouvel onglet) ; un projet sur un package plus ancien garde l'ancien détour. - Le mot de provenance
factory, etcandidatessur un paramètre, disparaissent de--format json— un paramètre n'est plus jamais laissé ouvert sur une factory ambiguë désormais, si bien que les deux sont toujours vides.
🐛 Corrections
- Un type refusé pour être abstrait ou générique le dit désormais (
TypeIsAbstract/TypeIsGeneric) au lieu d'être signalé comme n'ayant pas de constructeur, et le même refus nomme désormais aussi la voie de la factory statique lorsque plusieurs factories éligibles sont à égalité. - Une garde écrite dans un projet sur un autre framework cible (une bibliothèque
netstandard2.0sous un projet de testnet8.0, par exemple) est de nouveau lue au lieu d'être ignorée silencieusement. - Une collection de collections typées par interface (
List<HashSet<T>>pour un paramètreList<ISet<T>>) n'émet plus un fichier qui ne compile pas. - Un
readonly structderrière un constructeur privé et unCreatepublic est désormais généré via sa factory au lieu d'un défaut initialisé à zéro. - Chaque orthographe du rejet des espaces blancs se lit désormais
.NotBlank()au lieu de.NonEmpty()— nécessite la version correspondante deJustDummiesportantNotBlank(). - Une garde atteinte via un récepteur à accès conditionnel nul, un
throwà l'intérieur d'une affectationswitch, ou un appel à une bibliothèque de gardes en position de retour ou dans l'initialiseur d'une déclaration locale, est désormais marquéeunread guardsau lieu d'être passée sous silence. - Une garde qu'un initialiseur
: this(…)/: base(…), ou une factory construite sur un constructeur privé gardé, se contente de déléguer est désormais repliée sur le paramètre qui la transmet là — clôturant plusieurs formes que 1.1.0-beta.3 lisait silencieusement de travers ou pas du tout. - Une transmission
paramsen forme normale est de nouveau lue ; seule la forme développée est refusée. - Une transmission avec suppression de nullabilité (
value!) replie la garde au lieu de la perdre, lue directement ou via un constructeur délégué. - Un initialiseur
: this(…)qui se délègue à lui-même ne fait plus déborder la pile. - Une garde
.Count/.Lengthsur un paramètre qui n'est ni une chaîne ni une collection est désormais marquéeunread guardsau lieu d'être lue avec la mauvaise famille. - Une garde qu'un saut peut sauter depuis l'intérieur d'un bloc
using,lockoucheckedest désormais marquéeunread guards, pas seulement en haut du corps. - Un plancher de distinction sur
char,byte,sbyte,Int16/UInt16,Half, ou le domaine d'une énumération, est désormais marquéunread guardsau-delà de ce que l'élément peut réellement produire, au lieu d'être écrit avec assurance. - Une énumération sans membre déclaré laisse désormais le paramètre ouvert au lieu de générer un appel que la bibliothèque elle-même refuse.