Scénarios de validation multiples pour EntLib - le style .resx?
-
19-09-2019 - |
Question
Actuellement, j'ai un ensemble de règles de validation EntLib définies dans mes classes. Les règles plus tard changer en fonction du client.
Ce que je voudrais faire est de conserver mes cours, et il suffit d'appeler les différents ensembles de règles définies quelque part pour le client spécifique.
La fonctionnalité de ce qui est similaire à stocker des valeurs d'internationalisation dans un fichier .resx, où les changements de contenu en fonction des paramètres de localisation, mais dans ce cas, les règles prédéfinies changeraient en fonction du client.
Merci.
La solution
Pour ceux qui se demandent, compte tenu de la règle suivante pour un paramètre TerminalId:
<ValidatorComposition(CompositionType.And)> _
<NotNullValidator(MessageTemplate:="Terminal id is required.", Ruleset:="Default")> _
<StringLengthValidator(1, 19, MessageTemplate:="Terminal id must be between 1 and 19 digits in length.", Ruleset:="Default")> _
Public Property TerminalId() As String
Get
Return _TerminalId
End Get
Set(ByVal value As String)
_TerminalId = value
End Set
End Property
Il suffit d'ajouter un identifiant de jeu de règles supplémentaires ferait l'affaire.
<StringLengthValidator(1, 19, MessageTemplate:="Terminal id must be between 1 and 19 digits in length.", Ruleset:="Client1.Default")>
<StringLengthValidator(3, 10, MessageTemplate:="Terminal id must be between 3 and 10 digits in length.", Ruleset:="Client2.Default")>
<StringLengthValidator(5, 25, MessageTemplate:="Terminal id must be between 5 and 25 digits in length.", Ruleset:="Client3.Default")>
... puis en appelant simplement l'ensemble de règles de validation appropriée qui correspond au client connecté.
Ah EntLib.