|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Apr 2005
Città: Resana - TV
Messaggi: 960
|
[.NET Reflection] Type.InvokeMember()
'Giorno,
il metodo InvokeMember() mi lancia sta eccezione schifosa: Codice:
Dettagli eccezione: System.MissingMethodException: Impossibile trovare il metodo GAC.Classi.GestioneProcessi.MacchinaStati.funzioneTrasferimento1. Codice:
// Esegue la funzione di trasferimento adeguata per verificare la percorribilità di un arco
private bool EseguiFunzioneTrasferimento(DataRow ArcoDaControllare, object simbolo)
{
// Istanzio l'array contenente i parametri per le funzioni di trasferimento
object[] parametri = new object[2];
parametri[0] = ArcoDaControllare;
parametri[1] = simbolo;
Type macchinaStati = Type.GetType("GAC.Classi.GestioneProcessi.MacchinaStati");
// Invoco la funzione di trasferimento adeguata
return (bool)macchinaStati.InvokeMember("funzioneTrasferimento" + ArcoDaControllare["nCodTrasferimento"], System.Reflection.BindingFlags.InvokeMethod, null, this, parametri);
}
Codice:
// Prima funzione di trasferimento, sempre valida
private bool funzioneTrasferimento1(DataRow ArcoDaControllare, object simbolo)
{
return true;
}
Denghiu! |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Apr 2005
Città: Resana - TV
Messaggi: 960
|
ok, il motivo per il quale non riesce a trovare il metodo è che questo è dichiarato come private.
se lo dichiaro public tutto ok. però cambiando l' invokeAttr (il secondo parametro che si passa a InvokeMember e che definisce come il metodo dev'essere cercato) da BindingFlags.InvokeMethod a BindingFlags.NonPublic mi spara un'altra eccezione: Codice:
Dettagli eccezione: System.ArgumentException: Specificare i flag di associazione che descrivono l'operazione invoke richiesta. Nome parametro: invokeAttr |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Apr 2005
Città: Resana - TV
Messaggi: 960
|
ok risolto così:
Codice:
return (bool)macchinaStati.InvokeMember("funzioneTrasferimento" + ArcoDaControllare["nCodTrasferimento"].ToString(), BindingFlags.InvokeMethod | BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, null, this, parametri);
'iao |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 10:51.



















