From a0c43ee93e5c13c68e0c087fba33117515550d05 Mon Sep 17 00:00:00 2001 From: yusing Date: Sat, 10 Jan 2026 15:49:58 +0800 Subject: [PATCH] feat(serialization): add validation support for custom slice types Enhanced the ConvertSlice function to include validation for destination slices that implement the CustomValidator interface. If validation fails, errors are collected and returned, ensuring data integrity during slice conversion. --- internal/serialization/serialization.go | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/internal/serialization/serialization.go b/internal/serialization/serialization.go index f2881fde..dc887718 100644 --- a/internal/serialization/serialization.go +++ b/internal/serialization/serialization.go @@ -480,6 +480,14 @@ func ConvertSlice(src reflect.Value, dst reflect.Value, checkValidateTag bool) g } numValid++ } + + if dst.Type().Implements(reflect.TypeFor[CustomValidator]()) { + err := dst.Interface().(CustomValidator).Validate() + if err != nil { + sliceErrs.Add(err) + } + } + if err := sliceErrs.Error(); err != nil { dst.SetLen(numValid) // shrink to number of elements that were successfully converted return err