[C#] in Generic/Stark typisierte Liste speichern

Hale

Mitglied
Hallo Zusammen,

ich habe eine kleine Aufgabe bekommen, wo ich durch den Gauß-Algorhitmus den Ostersonntag berechnen soll und die beweglichen Feiertage. Sobal dies geschehen ist, soll ich die Feiertage in einer stark typisierten Liste(siehe generic) speichern.

Hierzu habe ich 2 Klassen(Pflichtvorgabe), die Klasse Feiertage und FeiertageBerechnen.
In der Klasse FeiertageBerechnen habe ich eine Funktion, welche mir den x-ten Märztag zurück gibt, an dem Ostern liegt. Die restlichen Feiertage kann man einfach durch addieren und subtrahieren hinzufügen.

Nun kommt mein kleiner Problem:

Ich soll die Feiertage in der gernerika Klasse Feiertage abspeichern, dass bekomme ich auch noch hin, dennoch weiß ich jetzt leider nicht, wie ich diese wieder auslesen kann in meiner Hauptform. Google hat mir dort leider nicht wirklich weitergeholfen, genau wie die MSDN

Hier mein Code:
Code:
    class Feiertage<T>
    {
        public void Add(T input) { }
    }
Code:
        public static Feiertage<DateTime> o_Feiertage = new Feiertage<DateTime>();
        public static void Feiertage(int p_nJahr)
        {

            //Berechnung der Feiertage

            o_Feiertage.Add(OsterSon);
            o_Feiertage.Add(GruenDo);
            o_Feiertage.Add(KarFr);
            o_Feiertage.Add(OsterMon);
            o_Feiertage.Add(ChristiHimmel);
            o_Feiertage.Add(PfingSon);
            o_Feiertage.Add(PfingMon);
            o_Feiertage.Add(FronLeich);
        }
Code:
    public partial class Form1 : Form
    {
        //Diverse Events noch vorhanden

        private void BerechnenUndFett()
        {
            FeiertageBerechnen.Feiertage(monthCalendar1.SelectionStart.Year);
            // ToDo Feiertage FETT in den Kalender eintragen... aber wie?
        }
    }

Wenn mir hier einer weiterhelfen könnte, wäre das schon echt gut.

Grüße
Hale
 
Es gibt ein paar Punkte, die ich nicht verstehe:

  • Sind die von der Aufgabenstellung vorgegebenen Klassen vollständig, oder sollst du sie erweitern/korrigieren?
  • Warum ist die Feiertage-Klasse eine generische Klasse? Das ergibt keinen Sinn, da ein Feiertag immer ein DateTime ist, oder wird es spaeter auch andere Feiertage geben, die durch etwas anderes (Integer?, Strukturen/Klassen?) dargestellt werden?

dennoch weiß ich jetzt leider nicht, wie ich diese wieder auslesen kann in meiner Hauptform
Wenn die Pflichtvorgabe-Klasse "Feiertage" vollständig ist, dann ist die Antwort schlichtweg: es geht nicht.

Du musst der Klasse eine Eigenschaft oder Methode geben, die die gespeicherten Feiertage zurück gibt. Außerdem musst du die Methode Add so erweitern, dass die hinzugefügten Feiertage auch tatsächlich irgendwo gespeichert werden! Bislang verpuffen sie im Nirgendwo.

Dann noch etwas zum Stil: Ich würde Variablennamen wie "OsterSon" vollständig ausschreiben, also "OsterSonntag". Es gibt keinen Grund, Buchstaben zu sparen. Schließlich bietet VisualStudio IntelliSense an und du musst daher sowieso nur die ersten paar Buchstaben tippen, den Rest vervollständigt IntelliSense. Aber das ist mein persönlicher Geschmack.


C#:
// ToDo Feiertage FETT in den Kalender eintragen... aber wie?
Das hängt davon ab, was dein "Kalender" ist. Handelt es sich um den MonthCalendar?
 
Sind die von der Aufgabenstellung vorgegebenen Klassen vollständig, oder sollst du sie erweitern/korrigieren?

Nein, nur die Namen für die beiden Klassen und das es 2 unterschiedliche Klassen sein müssen ist vorgegeben.

Warum ist die Feiertage-Klasse eine generische Klasse? Das ergibt keinen Sinn, da ein Feiertag immer ein DateTime ist, oder wird es spaeter auch andere Feiertage geben, die durch etwas anderes (Integer?, Strukturen/Klassen?) dargestellt werden?

Die Aufgabenstellung lautet: "Die Instanz der Klasse Feiertag in einer stark typisierten Liste in der Klasse FeiertageBerechnen speichern."

Und ich dachte, dass dies so umgesetzt werden könnte :D

[EDIT] meine Quelle für die generic Klasse war http://msdn.microsoft.com/de-de/library/512aeb7t(v=vs.80).aspx

Das hängt davon ab, was dein "Kalender" ist. Handelt es sich um den MonthCalendar?

Ja, dort habe ich aber schon einen Lösungsansatz mit den BoldDates etc.

Dann noch etwas zum Stil: Ich würde Variablennamen wie "OsterSon" vollständig ausschreiben, also "OsterSonntag". Es gibt keinen Grund, Buchstaben zu sparen. Schließlich bietet VisualStudio IntelliSense an und du musst daher sowieso nur die ersten paar Buchstaben tippen, den Rest vervollständigt IntelliSense. Aber das ist mein persönlicher Geschmack.

Wie du schon sagst, Geschmackssache. In diesem Fall aber fest vorgegeben.

Gruß
Hale
 
Zuletzt bearbeitet:
Zurück