Bonjour,
J'aurais voulu savoir s'il était possible de limiter le nombre de caractères d'une propriété de type String dans une classe custom ?
Ou bien faut-il obligatoirement passé par un tableau de caractères ?
Bonjour,
J'aurais voulu savoir s'il était possible de limiter le nombre de caractères d'une propriété de type String dans une classe custom ?
Ou bien faut-il obligatoirement passé par un tableau de caractères ?
Bonjour Kropernic.
La propriété Length d'un String devrait pouvoir vous aider.
Cordialement.
Oui je pourrais faire un test sur la longueur dans le constructeur de le setter de la propriété. Ca je le savais bien ^^.
Ce que je demandais, c'est s'il était possible de préciser la longueur directement dans la déclaration de la propriété.
Quelque chose dans ce genre-ci :
où XXXXXXXX serait un paramètre pour la longueur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Public Class MaClass Public Property MaPropriete As String XXXXXXXX End Class
Du coup, pas de test à faire. Si la chaine passée au setter de la propriété, ça lève une exception ou bien ça la tronque.
Je pensais avoir été clair pourtant![]()
Salut Kopernic,
Si tu recupère ton string depuis une textebox tu peux limiter la taille dans cette derniere, sinon il semblerait que non.
J'en conclus que la réponse à ma question est non.
Merci.
Bonjour,
Je fais remonter ce post car je viens de trouver une solution qui pourrait peut-être répondre à la question gràce aux questions et recherches de 105rn2.
Voici le lien : Limitation taille
Il faut intégrer les classes EntityValidationResult, EntityValidator, ValidationHelper au projet.
Si la chaîne affectée est trop longue une erreur est tracé, mais il faut la tester. Tu peux peut-être modifier ces classes pour tronquer la chaîne.
Dans tous les cas plus besoin de tester toutes les propriétés, l'appel a la méthode "ValidateEntity" suffit pour connaître les erreurs.
Espérant que celà apporte une réponse satisfaisante à ton problème.
A+, Hervé.
Traductions d'articles :
La mémoire en .NET - Qu'est-ce qui va où ?
Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.
Je viens de faire un petit test en utilisant directement l'appel à "ValidateEntity" dans la classe pour générer une exception.
Par contre, il faut forcement un appel à une méthode de vérification, mais tous cela est générique et interne à la classe.
Ex:
Utilisation
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 Public Class clsDataJour Private mAbreviation <Display(Name:="Abréviation")> <Required()> <StringLength(8, ErrorMessage:="L'Abréviation ne peut excéder 8 caractéres")> Public Property Abreviation As String Get Return mAbreviation End Get Set(ByVal value As String) mAbreviation = value VerifPropriete() End Set End Property Private Sub VerifPropriete() Dim validationResult = ValidationHelper.ValidateEntity(Of clsDataJour)(Me) If validationResult.HasError Then Throw New System.Exception(validationResult.Errors(0).ErrorMessage) End Sub
En plus, avec cette méthode, il est possible de définir plusieurs types de contrôle sur la propriété, et tout est géré en automatique derrière. (A creuser, voir si l'on ne peut pas indiquer la méthode de vérif dans les annotations)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Dim DonneesJour As clsDataJour = New clsDataJour() Try DonneesJour.Abreviation = "SuiviJour" ' exception levée Catch ex As Exception MsgBox(ex.Message) End Try
A+, Hervé.
Traductions d'articles :
La mémoire en .NET - Qu'est-ce qui va où ?
Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 Public Class Acceuil Private _Curiosité As String Public Property Curiosité(ByVal LongueurMax As UShort) As String Get Return _Curiosité End Get Set(ByVal Vlr As String) If Vlr.Length > LongueurMax Then Beep() Else _Curiosité = Vlr End Set End Property Private Sub Acceuil_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Curiosité(5) = "Anticonstitutionnellement" MsgBox(Curiosité(0)) End Sub End Class
Il est possible d'utiliser des attributs pour ceci:
http://msdn.microsoft.com/en-us/libr...v=vs.100).aspx
A noter qu'il me semble que ca ne marche pas dans toutes les technologies (je l'utilise sur Silverlight).
Retrouvez moi sur :
Mon Espace Developpez.com-------------------------------
Dvp.NET, une librairie open-source de composants .NET
Mon blog: Up there in the code----------------------------
Twitter: NatMarchand
Ma société: So@t
Showrizo : Suivez votre planning de séries télé sous Windows 8
Partager