Laden...

Klasse für Konfiguration: Suche elegantere Lösung als verschachtelte Klasse bei der alles public ist

Erstellt von abug vor 11 Jahren Letzter Beitrag vor 11 Jahren 1.621 Views
Thema geschlossen
A
abug Themenstarter:in
10 Beiträge seit 2012
vor 11 Jahren
Klasse für Konfiguration: Suche elegantere Lösung als verschachtelte Klasse bei der alles public ist

Hallo

Ich habe eine Konfigurationsdatei die ich digital abbilden und von der ich mehrere Objekte erstellen möchte.

Die Konfigurationsdatei ist immer folgendermassen aufgebaut:

[Überschrift1]
Variable1 = beliebigerWert
Variable2 = beliebigerWert

[Überschrift2]
Variable3 = beliebigerWert
Variable4 = beliebigerWert

jetzt würde ich folgendermassen vorgehen.



namespace WindowsApplication1
{
    static class Program
    {
        static void Main()
        {
            Variablen neu = new Variablen();
            Variablen alt = new Variablen();
            neu.Ueberschrift1.Variable1 = 42;
            neu.Ueberschrift2.Variable2 = 11;
            alt.Ueberschrift1.Variable1 = 24;
            alt.Ueberschrift2.Variable2 = 11;
        
        }
        public class Variablen
        {
            Ueberschift1 mUeberschrift1 = new Ueberschrift1();
            Ueberschift1 mUeberschrift2 = new Ueberschrift2();
            public class Ueberschrift1
            {
                public int Variable1;
                public int Variable2;
            }

            public class Ueberschrift2
            {
                public int Variable3;
                public int Variable4;
            }

        }

    }
}

edit: Ich suche eine elegantere Möglichkeit als die von mir verwendete.

Hinweis von herbivore vor 11 Jahren

Wie durch die folgenden Antworten klar wird, ist die entscheidende Verbesserung für so ein Standardproblem, die bestehenden, vorgesehenen Klassen zu verwenden und das Rad nicht neu zu erfinden.

5.658 Beiträge seit 2006
vor 11 Jahren

Ich suche eine elegantere Möglichkeit als die von mir verwendete.

[Tutorial] Konfigurationsmodell im .NET Framework oder XML-Serialisierung.

Christian

Weeks of programming can save you hours of planning

B
357 Beiträge seit 2010
vor 11 Jahren

Ich habe das Gefühl, dass du dir erst mal ein Buch über OOP durchlesen solltest. Dazu dann noch, dass Felder nach Möglichkeit niemals public sein sollten und was es mit Strukturen auf sich hat.

A
abug Themenstarter:in
10 Beiträge seit 2012
vor 11 Jahren

Vielen Dank für eure Antworten.

Dass meine Lösung nicht elegant ist habe ich vermutet. Könntet ihr konkretisieren was ihr für falsch haltet.

Generell ist mein Gedanke:

  • es gibt eine Konfigurationsdatei
  • es gibt Überschriften
  • Überschriften haben variablen welche im Kontext zu den Überschriften stehen.
  • variablen haben werte
  • werte unterscheiden sich zwischen verschiedenen Configs.
  • Ich erstelle ein Modell dass die Überschriften mit Variablen und Werten darstellt.
    Es gibt eine Klasse für die Überschriften welche Variablen für die Konfig-Variablen hat.
    Eine Instanz dieser Klassen ist ein Abbild der jeweils vorliegenden Konfigurationsdatei. Mir ging es erstmal um die Strukturierung.
    Um Werte abzufragen könnte ich noch eine get und set Methode schreiben die public machen und die Variablen als private deklarieren. Wie gesagt, es geht mir um den Ansatz.
5.658 Beiträge seit 2006
vor 11 Jahren

Warum willst du denn das Rad neu erfinden? Was üblicherweise für solche Zwecke eingesetzt wird, hab ich bereits geschrieben. Wenn dir das nicht gefällt, solltest du doch irgendwelche Gründe dafür (bzw. dagegen) haben...

Christian

Weeks of programming can save you hours of planning

T
2.224 Beiträge seit 2008
vor 11 Jahren

@abug
Was du dir da zusammen zimmerst nennt sich ini Datei bzw. willst du dafür einen eigenen Parser schreiben.

Dein Konstrukt ist nun sehr unschön und vom Aufbau her auch undurchdacht.
Solange es keinen Grund für solch eine Struktur gibt kann ich ebenfalls nur das Config System von .Net empfehlen.

Falls du von der Idee nicht abweichen willst solltest du dich erst einmal mit einem Grundlagen vertraut machen.
Dies steht auch in den Foren Regeln.

Ein Anfang wäre ein doppelt verschachteltes Dictionary.
Also sowas wie Dictionary<string, Dicationary<string, string>>

Dies solltest du der Lesbarkeit halber aber in eine ordentliche Struktur packen.
Ein entsprechender Parser ist in wenigen Minuten selbst gebaut.

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.

3.170 Beiträge seit 2006
vor 11 Jahren

Hallo,

Was du dir da zusammen zimmerst nennt sich ini Datei

genau. Und das ist wie schon gesagt ein veraltetes Format.
Wenn Du dennoch daran gebunden bist, gibt es Klassen zuhauf im Internet, z.B. bei Codeproject, oder auch hier im Forum:
Ini-Datei-Klasse
IniReader

Gruß, MarsStein

Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca

A
abug Themenstarter:in
10 Beiträge seit 2012
vor 11 Jahren

Vielen Dank für eure Antworten.

Dass ich das nicht zu Fuss machen muss ist mir bewusst. Mein Problem ist dass mein Professor mir immer vorgeworfen hat dass ich unsauber programmiere. Jetzt bin ich im Job und muss code abliefern auf den andere zurückgreifen. Mir geht es vor allem darum meine Art zu coden zu verbessern.

16.834 Beiträge seit 2008
vor 11 Jahren

Dann liest mal [FAQ] Wie finde ich den Einstieg in C#? durch, arbeitest nen gescheites C# Buch durch (natürlich für Deine spätere Arbeit passend. Macht ja kein Sinn ASP.NET zu lernen wenn Du später WPF machst) und lenrst, wie man objektorientiert entwickelt und programmiert (nicht coden, das machen PHPler).

Aber wir drehen uns hier im Kreis, wenn Dir einfach die Grundlagen nicht flüssig von der Hand gehen.
Und irgendwie trifft das hier [Hinweis] Wie poste ich richtig? Punkt 1.1.1

Thema geschlossen