Entwickler-Ecke
Basistechnologien - Methode im Array aufrufen
paddy14 - Mi 27.07.11 11:17
Titel: Methode im Array aufrufen
Guten Tag Forum,
ich habe folgende Frage:
Damit ich nicht immer hunderte von if else Abfragen machen muss, dachte ich mir es muss doch eine andere Möglichkeit geben.
Ich hatte da an sowas gedacht wie, ein Methoden Array, das ich dann das Array mit einer Schleife durchlaufe und mir dann die passende Mehtode heraussuche und dementsprechend auch ausführen kann.
Gibt es so was???
Danke für die Antworten!
Mfg Patrick
Th69 - Mi 27.07.11 11:52
Hallo paddy14,
könntest du ein Code-Beispiel geben, was du genau meinst?
paddy14 - Mi 27.07.11 12:10
Code an sich habe ich noch nicht, ich versuche das mal dazustellen.
Die Methoden sind alle unterschiedlich.
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| if(a == 1) method1(); if(a == 2) method2(); if(a == 3) method3(); . . . |
Dort wird ja anhand der Nummer entschieden welche Methode aufgerufen wird, wenn ich also bzw. viele verschieden Methoden habe dann wäre es ja blöd immer nur if else Abfragen zumachen, ich habe mir das so vorgestellt.
C#-Quelltext
1: 2: 3:
| Methodarray array = new Methodarray[];
array[1](); |
Ich hoffe sowas gibt es, wenn nicht wie könnte man es sonst lösen???
Th69 - Mi 27.07.11 12:22
Ja, das ist ganz einfach:
sofern die Methoden alle die gleiche Signatur haben (Rückgabewert sowie Parameter sind identisch), dann erzeuge einfach ein Delegate, z.B.
C#-Quelltext
1:
| delegate void MyMethodDelegate(); |
Und dann kannst du ein Array oder List<> oder Dictionary<> oder ... davon anlegen:
C#-Quelltext
1:
| MyMethodDelegate myMethods[] = { method1, method2, method3 }; |
Und Aufruf dann per
s z.B. auch
http://www.dotnetjohn.com/articles.aspx?articleid=262
paddy14 - Mi 27.07.11 12:43
Gilt das auch für Objektmethoden?
Sprich, Objekt1.method(), Objekt2.method()...
Kha - Mi 27.07.11 12:57
Ja, genau so ins Array einfügen.
Eine Frage stellt sich mir dabei aber: Warum hast du überhaupt hunderte verschiedene Methoden mit der gleichen Signatur :shock: ?
paddy14 - Mi 27.07.11 12:59
naja hundert ist ein bissl übertrieben aber es kommen schon so an die 20 zusammen, kommt alles wegen meines Datatransferobjekt, dort sind an die 20 verschiedene Objekte drinn
Ralf Jansen - Mi 27.07.11 13:53
| Zitat: |
| aber es kommen schon so an die 20 zusammen, kommt alles wegen meines Datatransferobjekt, dort sind an die 20 verschiedene Objekte drinn |
Wäre es dann nicht sinnvoller (insbesondere einfacher erweiterbar) anstatt 20 verschiedene Methoden lieber 20 Klassen zu machen die ein Interface mit einheitlicher Methodensignatur für diese Methode haben und 1-1 auf deine DTO Typen mappen?
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!