diff --git a/doc/Learn/KeyEquality/rules.md b/doc/Learn/KeyEquality/rules.md index 851930fc68..ba117c4290 100644 --- a/doc/Learn/KeyEquality/rules.md +++ b/doc/Learn/KeyEquality/rules.md @@ -1,22 +1,22 @@ --- -uid: Uno.Extensions.Reactive.Rules +uid: Uno.Extensions.KeyEquality.Rules --- # Feeds code analyzers ## KE0001 -**A record eligible to IKeyEquatable generation must be partial.** +**A record eligible for IKeyEquatable generation must be partial.** You have a record that has a property that can be used to generate `IKeyEquatable` implementation for that record, but it was not declared as `partial`. -Add the `partial` modifier on your record, or disable the `IKeyEquatable` implementation generated using `[ImplicitKeyEquality(IsEnabled = false)]` on the record itself or on the whole assembly (not recommended). +Add the `partial` modifier on your record, or turn off the `IKeyEquatable` implementation generated using `[ImplicitKeyEquality(IsEnabled = false)]` on the record itself or the whole assembly (not recommended). ## KE0002 **A record that implements GetKeyHashCode should also implement KeyEquals.** -You have method named `GetKeyHashCode` in your record, but there is no `KeyEquals`. +You have a method named `GetKeyHashCode` in your record, but no `KeyEquals` exist. If you want to define a custom way to compute _key equality_, you have to implement both the `GetKeyHashCode` and `KeyEquals`. @@ -24,7 +24,7 @@ If you want to define a custom way to compute _key equality_, you have to implem **A record that implements KeyEquals should also implement GetKeyHashCode.** -You have method named `KeyEquals` in your record, but there is no `GetKeyHashCode`. +You have a method named `KeyEquals` in your record, but there is no `GetKeyHashCode`. If you want to define a custom way to compute _key equality_, you have to implement both the `GetKeyHashCode` and `KeyEquals`. @@ -32,22 +32,20 @@ If you want to define a custom way to compute _key equality_, you have to implem **A record flagged with `[ImplicitKeyEquality]` attribute must have an eligible key property** -You have a record that is flagged with `[ImplicitKeyEquality]` attribute, but there is no property that match any of the defined implicit keys. +You have a record flagged with the `[ImplicitKeyEquality]` attribute, but no property matches any of the defined implicit keys. -You should either remove the `[ImplicitKeyEquality]` attribute, either add a valid property name. +You should remove the `[ImplicitKeyEquality]` attribute or add a valid property name. ## KE0005 **A record should have only one matching key property for implicit IKeyEquatable generation.** -You have a record that is eligible for implicit key equality generation, but it has more than one matching implicit key. -The generated implementation of `IKeyEquatable` will use only the first key. +You have a record eligible for implicit key equality generation, but it has more than one matching implicit key. The generated implementation of `IKeyEquatable` will use only the first key. -You should either explicitly flag all needed key properties with the `[Key]` attribute, -either remove/rename properties that should not be used as key. +You should either explicitly flag all needed key properties with the `[Key]` attribute or remove/rename properties that should not be used as keys. > [!NOTE] -> By default the key equality generation will search for properties named `Id` or `Key`. +> By default, the key equality generation will search for `Id` or `Key` properties. > You can customize it using the `ImplicitKeyEquality` attribute. -> For instance setting `[assembly:ImplicitKeyEquality("Id", "MyCustomKey")]` on your assembly will no longer search for `Key` properties, +>, For instance, setting `[assembly:ImplicitKeyEquality("Id", "MyCustomKey")]` on your assembly will no longer search for `Key` properties, > but will instead search for `MyCustomKey` properties. diff --git a/doc/Learn/KeyEquality/toc.yml b/doc/Learn/KeyEquality/toc.yml new file mode 100644 index 0000000000..2d6f4d7388 --- /dev/null +++ b/doc/Learn/KeyEquality/toc.yml @@ -0,0 +1,4 @@ +- name: Overview + href: xref:Uno.Extensions.KeyEquality.Concept +- name: Rules + href: xref:Uno.Extensions.KeyEquality.Rules