Sto utilizzando reflection per chiamare un metodo generico con un tipo determinato in fase di esecuzione. Il mio codice è il seguente:Chiama Metodo generico che utilizza il tipo di runtime e l'oggetto restituisci cast
Type tType = Type.GetType(pLoadOut.Type);
MethodInfo method = typeof(ApiSerialiseHelper).GetMethod("Deserialise", new Type[] { typeof(string) });
MethodInfo generic = method.MakeGenericMethod(tType);
generic.Invoke(obj, new object[] { pLoadOut.Data });
Funziona bene. Tuttavia il metodo generic.Invoke restituisce un oggetto, ma quello che vorrei è il tipo determinato in fase di esecuzione. Questo è possibile con questo approccio, o c'è un'opzione migliore?
Mark
Cosa intendi con "ma quello che vorrei è il tipo determinato in fase di esecuzione"? – decyclone
Supponendo che tType abbia un metodo chiamato DoSomething(). Mi piacerebbe poterlo fare; var a = generic.Invoke (obj, new object [] {pLoadOut.Data}); a.DoSomething(); – markpirvine
Qual è il tipo di ritorno statico effettivo di 'Deserialize'? La varianza del delegato potrebbe esserti utile. –