Escenarios de validación de múltiples EntLib - Resx estilo?
-
19-09-2019 - |
Pregunta
He actualmente tiene un conjunto de reglas de validación EntLib definidos en mis clases. Las reglas más adelante cambiar basado en el cliente.
Lo que me gustaría hacer es mantener mis clases, y simplemente llamar a los diferentes conjuntos de reglas definidas en algún lugar para el cliente específico.
La funcionalidad de este es similar al almacenamiento de los valores de internacionalización en un archivo .resx, donde los cambios de contenido en función de parámetros de localización, pero en este caso, las reglas predefinidas podría cambiar en función del cliente.
Gracias.
Solución
Para aquellos que se preguntan, dada la siguiente conjunto de reglas para un parámetro 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
La simple adición de un identificador de conjunto de reglas adicionales que hacer el truco.
<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")>
... entonces simplemente llamando el conjunto de reglas de validación adecuada que coincida con la que ha iniciado sesión en el cliente.
Ah EntLib.