vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Mails senden, abrufen und decodieren - ganz easy ;-)  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

C# Ecke
Mehrsprachigkeit über Attribute? 
Autor: spike24
Datum: 29.01.08 08:30

Grüssi,

im Zuge eines Bewerbungsgesprächs wurde ich über mein Wissen von Attributen gefragt, die Antwort war: Was?

Also habe ich mir das mal ein bisschen angeguckt, die Funktionsweise mit dem Debugger erforscht, Hilfe lesen und ein bisschen herumprobiert.

dann bin ich auf eine "Lösung" meines Problems mit Mehrsprachigkeit gestossen.
Grundsätzlich ist mir klar wie man das macht, irgenwo ne Datenquelle (xml, SQL) und den Wert der richtigen Sprachen mittels ID (Filterkriterium) auslesen.
Mein Problem bestand darin, nicht zu wissen wo ich den Code hinschreiben soll!

Hier meine Lösung mittels Attribute:
zuerst mal ein Interface und ein Enum
    interface IMultilangual
    {
        SupportedLanguages CurrentLanguage { get;}
    }
    public enum SupportedLanguages
    {
        NDef,
        German
    }
und das Attribut selbst:
    public class Multilangual_Attribute : Attribute
    {
        public Multilangual_Attribute() { }
 
        public string GenerateString(string name, SupportedLanguages _
          CurrentLanguage)
        {
            // hier ist der teil wo ich die Datenquelle auslese
            // mir ist klar, dass die nächste zeile hier nichts verloren hat ( _
              Performance)
            SqlConnection con = new SqlConnection();
            con.ConnectionString = "Data Source=Rossis-Acer\\***;Initial" & _
              "Catalog=***;User Id=****;Password=****;";
            con.Open();
 
            SqlCommand cmd = con.CreateCommand();
 
            cmd.CommandText = "SELECT MLa_" + CurrentLanguage.ToString() + "" & _
              "FROM Multilingual WHERE MLa_ControlName LIKE '" + name + "'";
 
            return (string)cmd.ExecuteScalar();
        }
    }
das Formular
    public partial class Multilangual_Form : Form, IMultilangual
    {
        public Multilangual_Form()
        {
            InitializeComponent();
 
            m_CurrentLanguage = SupportedLanguages.German;
        }
 
        private SupportedLanguages m_CurrentLanguage;
        public SupportedLanguages CurrentLanguage
        {
            get { return m_CurrentLanguage; }
        }
    }
das Label
    [Multilangual_Attribute()]
    public partial class Multilangual_Label : System.Windows.Forms.Label 
    {
        public Multilangual_Label()
        {
            InitializeComponent();
        }
 
        private SupportedLanguages m_CurrentLanguage;
        public SupportedLanguages CurrentLanguage
        {
            get { return m_CurrentLanguage; }
        }
 
        public override string Text
        {
            get
            {
                Multilangual_Attribute MultiLanguage = ( _
                  Multilangual_Attribute)Attribute.GetCustomAttribute(typeof( _
                  Multilangual_Label), typeof(Multilangual_Attribute));
 
                if (MultiLanguage == null)
                    return this.Text ;
                else
                    return MultiLanguage.GenerateString(this.Name, _
                      this.CurrentLanguage);
            }
        }
 
        protected override void OnParentChanged(EventArgs e)
        {
            base.OnParentChanged(e);
            if (this.Parent != null)
                if (this.Parent is IMultilangual   )
                    this.m_CurrentLanguage = (( _
                      IMultilangual)this.Parent).CurrentLanguage;
        }
    }
der Aufruf (die Verwendung)
            Multilangual_Label lbl = new Multilangual_Label();
            lbl.Name = "dtp_Date";
 
            Multilangual_Form frm = new Multilangual_Form();
 
            frm.Controls.Add(lbl);
 
            Console.WriteLine(lbl.Text);
es funktioniert so, und es ist auch genau das Code-Ergebniss das ich haben wollte, nämlich eine stelle wo das steht
jetzt ist die Frage, schreibt man das auch so? ist die Lösung richtig?
0
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Mehrsprachigkeit über Attribute?1.972spike2429.01.08 08:30
Re: Mehrsprachigkeit über Attribute?1.046ModeratorFZelle29.01.08 17:05
Re: Mehrsprachigkeit über Attribute?934spike2430.01.08 22:14
Re: Mehrsprachigkeit über Attribute?992ModeratorFZelle31.01.08 16:23
Re: Mehrsprachigkeit über Attribute?924spike2401.02.08 08:20
Re: Mehrsprachigkeit über Attribute?906ModeratorFZelle01.02.08 16:36
Re: Mehrsprachigkeit über Attribute?958spike2405.02.08 09:23
Re: Mehrsprachigkeit über Attribute?920ModeratorFZelle05.02.08 19:54
Re: Mehrsprachigkeit über Attribute?844spike2408.02.08 12:47
Re: Mehrsprachigkeit über Attribute?931ModeratorFZelle13.02.08 09:51
Re: Mehrsprachigkeit über Attribute?907ModeratorDaveS13.02.08 09:55
Re: Mehrsprachigkeit über Attribute?921spike2413.02.08 14:45
Re: Mehrsprachigkeit über Attribute?895ModeratorFZelle14.02.08 18:27
Re: Mehrsprachigkeit über Attribute?878ModeratorDaveS14.02.08 20:26

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel