2010-08-19 11 views
1

En essayant d'implémenter un support multilingue dans mon système, les autres systèmes au travail utilisent des fichiers xml pour cela générés à partir d'une base de données qu'ils utilisent depuis un certain temps maintenant ils veulent que je l'utilise aussi.L'utilisation de System.ComponentModel.DisplayName avec des valeurs dynamiques?

J'ai réussi à tout traduire à l'exception des noms d'affichage dans mes modèles de formulaire, ces valeurs ne peuvent être qu'apparemment des valeurs constantes, donc je ne peux pas utiliser une méthode qui obtient la traduction correcte.

Voici comment le code est maintenant:

[System.ComponentModel.DisplayName("Kontraktnamn")] 
public string Name { get; set; } 

Et je veux faire quelque chose comme ceci:

[System.ComponentModel.DisplayName(GetTextByKey("Contract_Name"))] 
public string Name { get; set; } 

Est-il possible de contourner cela? Ou peut-être qu'il existe une meilleure façon de le faire et encore utiliser les fichiers xml?

Répondre

4

Vous devrez créer votre propre attribut personnalisé qui peut lire les valeurs xml:

public class CustomDisplayName : DisplayNameAttribute 
{ 
    public CustomDisplayName() 
    { 
     this.DisplayName = MyXmlReader.Read(DisplayName); 
    } 
} 
+0

figured it moi-même, mais thx de toute façon: D – Marcus

+0

ne compile pas sur mon système, car la mise en DisplayName n'a pas été possible . Mais vous pouvez le faire 'public CustomDisplayName (aDisplayName) : base (aDisplayName) {} override chaîne DisplayName {get {return MyXmlReader.Read (base.DisplayName); }} ' –