Variablenlist mit unterschiedlichen Typen at runtime

30/09/2009 - 17:59 von Carsten Maul | Report spam
Hallo,

mein Problem sieht wie folgt aus: Ich lese aus einer Siemens-Steuerung
Werte via OPC (DCOM) aus.
Diese Werte können unterschiedlichen Typs sein, z.B. String, Char
Array, Double, Integer, Bool.

Beim Programmstart wird die Liste der zu lesenden Daten aus einer
Konfigurationsdatei eingelesen, das Programm muss also im Speicher
dynamisch eine Liste von Variablen unterschiedlichen Typs aufbauen,
diese verwalten, die Variablen beschreiben und spàter auch lesen.

Beispiel einer Datenliste:

String Seriennummer;
Int Messwert1;
Double Messwert2;
Bool Messwert3;

Wie genau diese Liste aussieht, entscheidet sich aber erst runtime beim
einlesen der config.

Mein Problem ist, dass ich mir nicht sicher bin wie ich das am besten
in Software giesse.

Ein Composite Pattern mit Generische Klassen wàren eine Lösung, aber
wenn ich spàter auf die daraus resultierenden Objekte zugreifen will
muss ich ja erstmal deren Typ feststellen. Ich muss z.B. die Liste
durchgehen und den Krempel in eine Datenbank schreiben. In einem
anderen Fall muss ich die Liste durchgehen und in einem Datagrid
darstellen.

Die ganze Sache soll natürlich KISS und performant bleiben.

Wie löse ich das am einfachsten?


 

Lesen sie die antworten

#1 Frank Dzaebel
30/09/2009 - 18:47 | Warnen spam
Hallo Carsten,

Beim Programmstart wird die Liste der zu lesenden Daten aus einer
Konfigurationsdatei eingelesen, das Programm muss also im Speicher
dynamisch eine Liste von Variablen unterschiedlichen Typs aufbauen,
diese verwalten, die Variablen beschreiben und spàter auch lesen.



Ein paar Beispiele ...
Der Typ kann zum Beispiel mit in der Konfigurationsdatei stehen:

[Dynamisches Erzeugen von Controls per Reflection und XML]
http://dzaebel.net/DynamicCreate.htm

ist eben die Frage, ob (undd ggf. wo) ein Mapping zwischen
Namen und Typen besteht.

[Controls automatisch serialisieren]
http://dzaebel.net/SerializeControls.htm

Ist denn das Format der Konfigurationsdatei schon gegeben?
Es wàren auch CSV-Treiber über OleDbConnection und
ggf. weitere möglich.

[C# Tutorial - Using The Built In OLEDB CSV Parser | Switch on the Code]
http://www.switchonthecode.com/tuto...csv-parser

[CodeProject: LINQ to CSV library]
http://www.codeproject.com/KB/linq/LINQtoCSV.aspx

oder eben hàufiger XML:

[LINQ to XML]
http://msdn.microsoft.com/de-de/lib...87098.aspx


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen