C# DCOM variabel ansprechen

davidbaumann

Commodore
Registriert
Aug. 2004
Beiträge
4.867
Hallo
Ich versuche es jetzt mal kurz und knackig ;)

Ich habe folgende Tabellen:
Code:
ID  | Name
0001  WriteBlah

ID  | IDX  | ParamName | ParamValue
0001  0001   Text        Blah
0001  0002   Text2       BlahBlubb
Die Funktion des DCOM-Server sieht so aus:

Code:
WriteBlah(string Text, string Text2)
Anhand dieser Daten in den Tabellen will ich jetzt, dass mein Programm auf einer bestimmten DCOM-Schnittstelle folgende Funktion ausführt:
Code:
WriteBlah("Blah", "BlahBlubb")
Jetzt könnte ich natürlich alle 50 Funktionen in Code schreiben (pseudocode):
Code:
if(Tabelle1.Name="WriteBlah")
{
  WriteBlah(Tabelle2.ParamValue...)
}...
Allerdings wäre das sehr viel Aufwand, und vor allem unflexibel... Die DCOM-Schnittstelle soll sich ändern können, ohne dass ich mein Programm anpassen muss... Gut ich denke mal das Interop kann ich so einfach neu kompilieren, oder? Das wäre nicht das Problem, das geht ja automagisch...

Ich würde mich echt über eure Hilfe freuen :) Bin grad an meiner Abschlussarbeit...

Gruß David
 
AW: C# DCOM variabel ansprechen

Hallo davidbaumann,

wenn ich das richtig verstanden habe, suchst du eine Funktion(Keyword) wie eval bei PHP, an die man einen String übergibt, der dann ausgeführt wird.

Denke nicht das es sowas in C# gibt, da es doch eine große Sicherheitslücke sein könnte.
Und dann müsste auf jedem PC ja auch ein Kompiler installiert sein.

Grüße

krizzel
 
AW: C# DCOM variabel ansprechen

Ich verstehe dein Problem nicht. Warum genau musst du das jetzt 50 Mal per Hand schreiben?
 
So wie ich das verstanden hat, will er eine Funktion auf rufen, die mit einer ID in der Datenbank steht.
Die Parameter die dazu gehören stehen in der zweiten Tabelle.

Und da das alles Daynamisch bleiben soll sucht er nach einer Methode um die Funktionen in einer Schleife o.ä. aufzurufen.

Grüße

krizzel
 
Die Funktionen, die der DCOM-Server bereitstellt, können sich jederzeit ändern.
Dazu will ich das Programm nicht jedesmal anpassen.
 
Wie kommunizierst du mit dem DCOM-Server ?
 
Ja über ein Interop... hab das bisher aber noch nicht angefangen, kann also keinen Code oder so posten.
Deswegen ja meine Idee, vielleicht reicht es einfach, das Interop neu zu generieren, und ich kann dann irgendwie ganz einfach (einfach ;)) die Funktion, die aufgerufen werden soll, statt über den Funktionsnamen (fest im Code) über einen String aufrufen.
Was weiss ich... Interop.BCServer.FunctionById('Funktion1').('params')...
Naja, war wohl eine verrückte, spontane Idee ;)
 
Du haust also dieses COM teil per verweise rein und willst dann einfach die Funktion innerhalb der DLL aufrufen ?

sowas sollte theoretisch über Method Invoking funktionieren da selbige über Strings angesprochen werden :)

wobei das eher Late binding wäre
 
Zuletzt bearbeitet:
Also danke mal für die Antwort, sieht so aus als wäre das zumindest mal ein gutes Schlüsselwort :)
Also das Beispiel das ich für JAVA gefunden habe, sieht zumindest mal vielversprechend aus.
 

Ähnliche Themen

Zurück
Oben