Frage

Ich habe diese exportierte Datei von einigen seltsamen (Standard für die Branche!) Format, was ich brauche, um den Import in vorhanden. Die Datei sieht im Grunde wie folgt:

DATRKAKT-START
  KAKT_LKZ  "D"
  KAKT_DAT_STAMM    "1042665"

  DATRKAIB-START
    KAIB_AZ "18831025"
    KAIB_STATUS_FM  2
    KAIB_KZ_WAE "E"
  DATRKAIB-END

  DATRKARP-START
    KARP_MELD   "831025"
    KARP_ST_MELD    "G"
  DATRKARP-END

...
DATRKAKT-END

Es gibt 56 Abschnitte mit insgesamt 1963 verschiedenen Reihen, also bin ich wirklich nicht in Erstellen von 56 Klassen mit 1963 Eigenschaften ... Wie Sie diese Datei behandeln würden so dass Sie eine Eigenschaft zugreifen können, wie es ein Ziel sind?

Datrkaib.Kaib_Status_Fm
Datrkarp.karp_St_Meld
War es hilfreich?

Lösung

Es sei denn, Ihre Programmiersprache können Sie Methoden, um Klassen zur Laufzeit hinzuzufügen oder können Klassen auf Anrufe auf undefinierte Methoden reagieren, gibt es keine Möglichkeit, dies zu tun. Die Sache ist, auch wenn C # haben können Sie dies tun, würden Sie Typsicherheit und Intellisense Hilfe sowieso (vermutlich einer der Gründe für den Wunsch, es zu arbeiten, wie das), also warum nicht gehen Sie einfach weiter und lesen Sie es in eine Datenstruktur verlieren? Meine Neigung wäre ein Hash sein, die Werte oder andere Hashes enthalten können, so würden Sie Anrufe erhalten wie (VB):

Datrkakt("Lkz")
Datrkakt("Dat_Stam")
Datrkakt("Kaib")("Az")
Datrkakt("Kaib")("Status_Fm")

Oder wenn Sie alle Datenelemente wissen eindeutig benannt werden wie in Ihrem Beispiel verwenden nur einen Hash:

Datr("Kakt_Lkz")
Datr("Kakt_Dat_Stam")
Datr("Kaib_Az")
Datr("Kaib_Status_Fm")

Sie können Intellisense Hilfe wieder durch eine Enumeration aller Datenelementnamen erstellen und bekommen:

Datr(DatrItem.KAKT_LKZ)
Datr(DatrIrem.KAIB_STATUS_FM)

Andere Tipps

Es sieht aus wie Daten strukturiert - Ich suche gerannt und ersetzen und es auf eine einfache XML konvertieren. und dann importieren.

Die, wenn Sie aus der es eine Code-Datei erzeugen wollen - prüfen Codesmith - ich glaube, es kann mach das.

würde ich mit einer Liste <name, list> von verschiedenem Objekt geht, dass ein Tupel <name, value> oder eine benannte Liste von Objekt sein kann.

Es ist nicht, dass dies automatisch für Sie tun.

Ich würde eine Klasse erstellen, alle geeigneten Eigenschaften enthalten (zB DatrDocument), und erstellen Sie eine DatrReader Klasse (ähnliche Idee zu den XmlDocument / XmlReader Klassen).

Die DatrReader müssen Sie den Inhalt der Datei oder einen Stream lesen und analysieren sie in eine DatrDocument.

Sie können auch eine DatrWriter Klasse zu schreiben, die eine DatrDocument nehmen und es in einen Stream schreiben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top