> Tech > Extension de l’objet local

Extension de l’objet local

Tech - Par Renaud ROSSET - Publié le 01 décembre 2010
email


Pour les développeurs d’applications métier, la puissance réelle des améliorations apportées aux données dans Silverlight réside dans la possibilité d’étendre l’objet local. Si, par exemple, vous souhaitez avoir la maîtrise des modifications apportées à l’objet, vous pouvez faire en sorte que la classe de l’objet local implémente

Extension de l’objet local

l’interface IEditable Object :

Public Class LocalCustomer
Implements System.ComponentModel.IEditableObject

La mise en oeuvre de cette interface ajoute trois méthodes à votre objet, lesquelles sont déclenchées lorsque celui-ci entre en mode édition (BeginEdit) et sort de ce mode (EndEdit et CancelEdit). Par exemple, au lieu d’employer un événement dans le DataForm pour effectuer les mises à jour, je peux utiliser la méthode EndEdit dans LocalObject pour que mes modifications soient rendues persistantes dans la base de données. Cet exemple reconvertit mon objet LocalCustomer en objet Customer et le passe à la méthode UpdateCustomer sur mon service, afin que les modifications soient enregistrées dans la base de données:

Public Sub EndEdit()
_cust = CustomerConverter.ConvertBack(Me)
nwd.UpdateCustomerAsync(_cust)
End Sub

Tout en utilisant le code pour donner à l’objet local la possibilité de se mettre à jour tout seul, je peux implémenter nombre de mes activités de validation des données sous forme déclarative, en étoffant les propriétés de l’objet local.

Par exemple, au niveau de la propriété CustomerId, je peux empêcher la mise à jour de celle-ci et utiliser l’attribut Bindable pour spécifier qu’elle gère uniquement la liaison de données unidirectionnelle (la liaison bidirectionnelle est la valeur par défaut). J’ai aussi la possibilité d’employer l’attribut Display pour contrôler l’ordre d’affichage des champs sur la page, pour spécifier le texte pour la légende de la zone et fournir un ToolTip descriptif. Je peux aussi utiliser l’attribut Required pour spécifier que la propriété doit être fournie avec une valeur et le message à afficher en l’absence de valeur. Avec tous ces attributs, la propriété a l’aspect suivant :


ComponentModel.BindingDirection.OneWay)> _

Name: ="Id", Order: =0, Description: = _
"Five character customer identifier")> _

Errormessage: ="Customer Id is required")> _
Public Property CustomerId() As String

Le DataForm prend en compte ces ornementations lors de l’utilisation de la propriété. Plus important encore, si je modifie mon formulaire et que je lie l’objet local à un contrôle d’interface utilisateur différent, ces ornementations seront également reprises par le contrôle en question. Elles « suivent l’objet » vers n’importe quel contrôle avec lequel la propriété est employée.

Les DataAnnotations de validation telles que Required sont utiles, mais elles gèrent uniquement des tâches de validation de base. Pour une validation plus poussée, vous devez écrire du code, qu’il est possible de placer dans la propriété proprement dite. Pour communiquer les conditions d’erreur à l’interface utilisateur Silverlight, il suffit de déclencher une exception, comme le fait cette version de ContactName :

Public Property ContactName() As String
Get
Return _ContactName
End Get
Set(ByVal value As String)
If value.Length < 5 Then
Throw New Exception( _
"Contact name must be"+ _
"at least 5 characters long")
End If
_ContactName = value
End Set
End Property

L’erreur résultante s’affiche automatiquement dans l’interface utilisateur, peu importe le contrôle qui est lié à l’objet. Vous pouvez aussi consolider votre code de validation dans une classe distincte et l’associer à l’objet local ou à des propriétés individuelles de celui-ci. Notre exemple associe la méthode ValidateCompanyName d’une classe Company Validator à la propriété CompanyName de mon objet local :


GetType(CompanyValidator), "ValidateCompanyName", _
ErrorMessage: ="Invalid company name")> _
Public Property CompanyName() As String

La classe validator associée, avec la méthode Validate CompanyName, aura l’aspect suivant :

Public Class CompanyValidator
Public Shared Function ValidateCompanyName( _
ByVal Name As String) As Boolean
Dim ValidCName As Boolean
…CompanyName validation code…
Return ValidCName
End Function
End Class

Téléchargez cette ressource

Guide de Sécurité IA et IoT

Guide de Sécurité IA et IoT

Compte tenu de l'ampleur des changements que l'IA est susceptible d'entraîner, les organisations doivent élaborer une stratégie pour se préparer à adopter et à sécuriser l'IA. Découvrez dans ce Livre blanc Kaspersky quatre stratégies efficaces pour sécuriser l'IA et l'IoT.

Tech - Par Renaud ROSSET - Publié le 01 décembre 2010