Laden...

Procedure an eine Klasse übergeben

Erstellt von kkirchhoff vor 14 Jahren Letzter Beitrag vor 14 Jahren 869 Views
K
kkirchhoff Themenstarter:in
118 Beiträge seit 2008
vor 14 Jahren
Procedure an eine Klasse übergeben

Hallo ich habe mal wieder ein kleines Problem. Ich habe eine Klasse, die auf ShortCuts reagiert. Nun möchte ich gern mein Aufruf der Klasse die Proceure/Funktion mitgeben die beim Auslösen eines ShortCuts ausgeführt werden soll.

Wie muss die Procedure/Funktion definiert werden, und als was für einen Parameter kann ich die übergen?

Wiedermal besten Dank im voraus ...

Gelöschter Account
vor 14 Jahren

in c# heißt das 'methode' 😃

du musst einen delegaten definieren und dann kannst du diesen als übergabeparameter definieren. anschließend kannst du dann einfach eine methode übergeben, die die gleiche signatur wie der delegat hat.

K
kkirchhoff Themenstarter:in
118 Beiträge seit 2008
vor 14 Jahren

Danke für Deine Antwort, dass mit den Delegaten habe ich noch nicht gemacht, werde mal danach suchen oder hast Du ein Beispiel?

Gelöschter Account
vor 14 Jahren

delegaten werden in allen c# büchern und in der msdn ausführlichst behandelt. es gehört zu den essentiellen dingen in c#

ich bin mir sicher das du schnell ein passendes tutorial findest.

5.299 Beiträge seit 2008
vor 14 Jahren

wobei ich seit 2005 der Ansicht bin, selbst definierte Delegaten sind obsolet.
Man kann fast jede Signatur mit den vorgefertigten generischen Delegaten Action<T> (und verwandte) implementieren (seit 2008 zusätzlich auch Func<T1, T2> und verwandte)).

Der Delegat für eine void Methode, die einen String und einen Integer erwartet, sähe so aus:


Action<string, int> myDelegate = myFunction;

Dann muß myFunction natürlich die Signatur aufweisen


private void myFunction(string arg1, int arg2){...}

Den zugewiesenen Delegaten kannstedann aufrufen, wie die Methode selbst:

myDelegate("Hallo", 5);


Sorry JAck30lena, dassich jetzt schon das ganze Tut hingeschrieben hab, wie gesagt, das übliche Vorgehen, wies glaub noch inne Bücher steht, findich halt meist suboptimal 😉

@kkirchhoff: Jetzt aber trotzdem mindestens inne MSDN nachgugge, was da unterm Stichwort delegate geboten wird.
Zum Umgang mit MSDN gugge auch Möglichkeiten der Informationsgewinnung

Der frühe Apfel fängt den Wurm.

P
67 Beiträge seit 2008
vor 14 Jahren

Bin irgendwie nicht so der Fan von vorgefertigten Delegaten. Lässt sich besser lesen wenn man einen Delegat hat der zb. "UpdateFormDelegate(..)" heisst und nicht "Action<Form>(..)". Von daher würde ich selbst definierte Delegaten nicht als Oboslet abstempeln.

Religionskriege sind Konflikte zwischen erwachsenen Menschen, bei denen es darum geht, wer den cooleren, imaginaeren Freund hat

5.299 Beiträge seit 2008
vor 14 Jahren

siehste, und ich bevorzuge generische, weilichda inne Benutzung die Signatur drinne hab:


private Action<string, int>_UpdateDelegate;


private UpdateDelegate _UpdateDelegate;

Wennich für letzteren Delegaten eine Methode schreibe, mussich erstmal die UpdateDelegate - Deklaration aufsuchen, und nachgucken, welche Signatur gefordert ist.

Der frühe Apfel fängt den Wurm.

Gelöschter Account
vor 14 Jahren

das problem der delegaten ist, das deren signatur noch lange nciht deren verwendungszweck festlegt. daher finde ich die generische variante auch besser.

916 Beiträge seit 2008
vor 14 Jahren

Stimmt ErfinderDesRades, ne sehr gute Begründung das generisch zu definieren.

Again what learned...