24 messaggi dal 19 dicembre 2002
Salve, una domanda. Se ho una classe con due metodi identici ma con firme diverse (overload del metodo) è possibile sapere via reflection quale dei due metodi è stato invocato?
Se provo a risolvere con
Type t;
t.GetMethod(MethodName);
Ovviamente mi restituisce AmbiguousMatchException.

Dovrei sapere la firma passata. C'è un modo per esempio sullo stackTrace di conoscere i parametri passati al metodo a runtime?

Grazie
Giovanni
Modificato da dueggi il 12 gennaio 2012 09.00 -
Uhm, davvero non mi è chiaro ciò di cui hai bisogno. In generale, c'è un overload di GetMethod che consente di specificare un array di Type, che rappresentano quindi la firma del metodo.

Fin qui ok. Sul discorso però dello stacktrace e sulla firma passata, mi sono perso

Ciao!
Marco
24 messaggi dal 19 dicembre 2002
grazie. infatti se passo l'array della firma del metodo posso sapere effettivamente quale dei due metodi è stato chiamato.
La domanda è proprio questa.
Come faccio a runtime a sapere quale dei due metodi è stato chiamato e quindi istanziare il GetMethod(MethodName, Type[]) giusto?
24 messaggi dal 19 dicembre 2002
Mi rispondo da solo.
ho tutto quello che serve sulla classe stackTrace.GetFrame
Infatti per avere gli attributi del metodo (quelli che mi occorono) posso richiamarli così
stackTrace.GetFrame(1).GetMethod().GetCustomAttributes(false)
altrimenti per la firma ho questo
stackTrace.GetFrame(2).GetMethod().GetParameters()

Grazie.
Ciao

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.