WinFuture-Forum.de: c# Vererbung DataTable - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

c# Vererbung DataTable


#1 Mitglied ist offline   frickler 

geschrieben 08. September 2015 - 07:52

Hi Leute,

ich hab eine Klasse, die von DataTable erbt. Im Konstruktor würde ich diese gerne initialisieren. Ich habe eine Funktion, die eine DataTable zurückliefert, damit würde ich gerne initialisieren. Wie muss ich vorgehen?

Ich dachte, das ginge mit this, aber da sagt der Compiler, dass ich das nicht als Ziel der Zuweisung nehmen kann. Hier mal der nicht funktionierende Code (als Beispiel, die echte ErzeugeDataTable() liefert natürlich keine leere DataTable)

    public class DataTableErbe:DataTable
    {
        DataTableErbe()
        {
            this = DatenBank.ErzeugeDataTable(5);
        }
    }

    public static class DatenBank
    {

        public static DataTable ErzeugeDataTable(int test)
        {
            return new DataTable();
        }
    }

0

Anzeige



#2 Mitglied ist offline   aeris 

  • Gruppe: aktive Mitglieder
  • Beiträge: 129
  • Beigetreten: 06. September 08
  • Reputation: 12
  • Geschlecht:unbekannt

geschrieben 11. September 2015 - 16:41

Nein, das geht so nicht.
Du kannst ein Objekt nicht im eigenen Konstruktor neu erstellen.

Was hast du denn vor?
0

#3 Mitglied ist offline   frickler 

geschrieben 11. September 2015 - 17:30

Bin dabei ein bestehendes Programm zu verbessern/erweitern. Momentan gibt es in vielen Quelldateien einfach zuviel Code. Ich trenne das jetzt in verschiedene kleine Dateien auf. Dabei hab ich beispielsweise bestehende DataTables durch von DataTable abgeleitete Objekte ersetzt. Ich hab jetzt einfach in der abgeleiteten Klasse die Spalten hinzugefügt und füge dann einfach alle Rows aus der DataTable an, die mir meine Funktion liefert.
0

#4 Mitglied ist offline   aeris 

  • Gruppe: aktive Mitglieder
  • Beiträge: 129
  • Beigetreten: 06. September 08
  • Reputation: 12
  • Geschlecht:unbekannt

geschrieben 11. September 2015 - 20:59

Hast du die Möglichkeit gleich den richtigen Objektstypen von deiner Datenbankklasse zurückzugeben?
Beispiel
    class Program
    {
        static void Main(string[] args)
        {
            var erbe1 = DatenBank.ErzeugeDataTable(1) as DataTableErbe1;
            var erbe2 = DatenBank.ErzeugeDataTable(2) as DataTableErbe2;
        }
    }

    public class DataTableErbe1 : DataTable
    {
        public DataTableErbe1()
        {
        }
    }

    public class DataTableErbe2 : DataTable
    {
        public DataTableErbe2()
        {
        }
    }

    public static class DatenBank
    {
        public static DataTable ErzeugeDataTable(int test)
        {
            switch (test)
            {
                case 1:
                    return new DataTableErbe1();
                case 2:
                    return new DataTableErbe2();
            }

            return null;
        }
    }

0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0