Laden...

Welchen Datentyp haben Methoden?

Erstellt von Crone vor 11 Jahren Letzter Beitrag vor 11 Jahren 1.215 Views
Thema geschlossen
C
Crone Themenstarter:in
168 Beiträge seit 2010
vor 11 Jahren
Welchen Datentyp haben Methoden?

Hallo zusammen,

heute musste ich mir selbst eine sehr interessante Frage stellen die ich leider nicht beantworten konnte.

Welchen Datentyp haben Methoden?

Um es besser erklären zu können mal ein kleines beispiel

Ich habe mir einen komplett eigenen Button programmiert (Da ich grade mit XNA rum Spiele und es dort keine Button gibt 😄) ... naja ist ja auch nicht all zu schwer.

doch nun abonniere ich ein Event Klassen übergreifend... auch kein Problem solang die FiredEvent variable public ist nun wurde ich aber schon gerne im Konstruktor angeben welche Methode aufgerufen werden sollte. Genau an diesen Punkt scheitert es den wie soll ich eine Methode als Parameter übergeben ohne Datentyp ... hab es natürlich als object dann versucht zu übergeben Problem ist ich müsste sie dann zu einer Methode wieder umwandeln was ohne Datentyp auch nicht geht 😉

Hier mal ein Codebeispiel:

Funtkioniert

public void testMethode();
{
}

Klasse k = new Klasse()
k.Clicked = testMethode;
public FiredEvent Clicked;

public Klasse()
{

}

Funktioniert nicht

public void testMethode()
{
}

Klasse k = new Klasse(testMethode)

public FiredEvent Clicked;

//funtkioniert nicht wegen den Datentyp
public Klasse(unbekannterDatentyp methode)
{
Clicked = methode;
}

Naja so sollte es klar sein was ich meine 😉

Naja das eigentliche Problem ist ich habe einen Methoden namen als STRING und würde gerne mit diesen nämlich das Clicked event abonnieren

also dies:


Clicked = (MethodenDatentyp)"Button1_Clicked";

Ist sowas überhaupt möglich gibt es irgend eine art Datentyp für Methoden?

Mit freundlichen Grüßen Marcel

Real programmers don't comment their code - it was hard to write, it should be hard to understand.

16.783 Beiträge seit 2008
vor 11 Jahren

Man sollte es vermeiden, Events Klassenübergreifend zu abonnieren.
Viel besser ist, dass jede Klasse ihre eigenen Events hat, und dadurch eine Weiterleitung umgesetzt wird.

C
Crone Themenstarter:in
168 Beiträge seit 2010
vor 11 Jahren

Naja bei einen eigenen Button macht das aber keinen sinn da jeder Button natürlich was anderes ausführen soll. Wie beim Echten Button abonniert man ein Event von einer anderen Klasse.

Real programmers don't comment their code - it was hard to write, it should be hard to understand.

925 Beiträge seit 2004
vor 11 Jahren

Um deine Frage zu beantworten: schau dir mal das Thema **Delegates **an. Das ist aber eigentlich C# Grundlagen.

C
Crone Themenstarter:in
168 Beiträge seit 2010
vor 11 Jahren

Um deine Frage zu beantworten: schau dir mal das Thema **Delegates **an. Das ist aber eigentlich C# Grundlagen.

HA die hab ich schon wieder ganz vergessen ich nutz sie einfach zu selten ;D damit lässt sich das Problem löse ... hätte ich auch drauf kommen könne 😄

Naja super danke 😉

Real programmers don't comment their code - it was hard to write, it should be hard to understand.

925 Beiträge seit 2004
vor 11 Jahren

Kein Problem. Immer wieder gern.

Hinweis von herbivore vor 11 Jahren

Es ist sogar noch viel grundlegender, denn der Datentyp der Methode, die per Parameter an den Konstruktor übergeben werden soll, ist selbstverständlich der Datentyp des Events, also FiredEvent.

Bitte beachte [Hinweis] Wie poste ich richtig? Punkt 1.1.1.

BZW: Der Event sollte allerdings, gerade wenn er public ist, auch tatsächlich mit dem event-Schlüsselwort deklariert werden, siehe [FAQ] Eigenen Event definieren.

Außerdem bleibt es bei dem Einwand, dass es keine gute Idee ist, die Methode an den Konstruktor zu übergeben, erst recht, wenn es um einen Button geht, denn auch im Vorbild Windows Forms kann man das nicht, sondern kann und muss die gewünschten EventHandler für die gewünschten Events immer (mit +=) nach der Erzeugung des Objekts registrieren.

Thema geschlossen