L'ajout d'attributs aux propriétés au moment de l'exécution permet une configuration et une validation flexibles de vos objets. Cependant, vous pouvez rencontrer l'exception « La collection était d'une taille fixe » lors de l'utilisation de certaines approches.
Origine de l'exception
Cette erreur se produit lorsque vous tentez de modifier un collection d'attributs intégrée du descripteur de propriété, qui est généralement définie comme un tableau de taille fixe. La modification directe de cette collection peut provoquer l'exception.
Résolution
Pour éviter ce problème, vous pouvez créer dynamiquement une nouvelle collection d'attributs au lieu de modifier celle existante. Voici une version révisée du code :
var propDesc = TypeDescriptor.GetProperties(typeof(T))[propName]; var newAttribs = propDesc.Attributes.Cast<Attribute>().ToList(); var attribute = new RequiredAttribute(); newAttribs.Add(attribute); // Set the new attributes collection in the property descriptor propDesc.SetAttributeCollection(new ReflectiveAttributeCollection(newAttribs));
Ce code crée une nouvelle ReflectiveAttributeCollection avec les attributs souhaités, y compris le RequiredAttribute. En définissant cette nouvelle collection dans PropertyDescriptor, vous pouvez ajouter dynamiquement des attributs à la propriété.
Considérations supplémentaires
En suivant ces directives, vous pouvez ajouter avec succès des attributs aux propriétés au moment de l'exécution et améliorer la flexibilité de votre code.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!