J'ai un système multi-langues, et partout je ce que je qualifierais de « propriétés wrapper » dans toutes les classes, comme:.NET 4, Puis-je utiliser des attributs ou une autre fonctionnalité POO pour simplifier ce code?
Public Property Name(Optional ByVal ForceLanguageCode As String = Nothing) As String
Get
Return Translations.GetByCode(Me.EntityID, "name", ForceLanguageCode)
End Get
Set(ByVal value As String)
Translations.SetByCode(Me.EntityID, "name", value, ForceLanguageCode)
End Set
End Property
Je puis copier et coller ce code pour chaque traduisible champ. Je souhaite être en mesure de remplacer cela avec une ligne de code d'une manière ou d'une autre, avec une classe. La seule chose qui change à chaque fois est le nom du champ, comme "nom", "titre", ou "sujet", etc. Cela semble un peu un gâchis et je veux que mon système soit aussi facile à utiliser que possible pour les développeurs.
Je l'ai fait des recherches sur les attributs, mais je ne pense pas que ma réponse est que:
1) Je ne sais pas comment instancier automatiquement les objets, d'autant plus que cela étend une entité LINQ où la La signature New() est déjà générée par le DBML. Ma technique actuelle utilise des fonctions statiques.
2) "EntityID" est une information en temps réel, pas de compilation.
Quelqu'un pourrait-il suggérer comment je pourrais nettoyer ce gâchis?
Désolé pour le très tard accepter. J'imagine qu'en essayant de résoudre mon problème, comprendre comment TryUpdateModel de MVC fonctionne serait utile, cela semble aussi parcourir les propriétés d'une certaine manière et les vérifier pour les attributs, etc. Va chercher dans la source MVC. –