From 12b784d126dc2115196dd707adc5498c9b9eb22d 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