in VB.NET la cosa si risolve in maniera elegante.
Come su B4A si definisce un "Conditional Symbols", ad esempio "Sviluppo", e poi queste righe:
#If Sviluppo
Dim db As Sql
#Else
Dim db As Object
#End If
In modalità di sviluppo quindi attivo la variabile
Sviluppo, e il compilatore riesce a compilare, ma soprattutto a mostrarmi l'help di tutti i metodi e proprietà della variabile
db poichè definita correttamente.
Poi quando dovrò distribuire il programma disattivo la variabile
Sviluppo e ricompilo il tutto, in questo caso la variabile
db sarà un object generico e quindi posso anche associarla ad altre cose in fase di runtime (questo viene fatto soprattutto quando si deve accedere a driver di cui non si conosce la versione installata dal cliente, ad esempio per MySQL).
Se il compilatore VB.NET trova una riga db.Execute(query) la compila senza problemi e non dà nessun avviso, sarà poi in fase di runtime che controlla se esiste o no il metodo Execute, ma se B4A invece non riesce a compilare il tutto purtroppo non c'è nulla da fare.
Bisognerebbe chiamare il metodo Execute tramite il suo nome, ad esempio CallSub(db, "Execute", "parametri da passare") ma non so se si riesce a trovare il sistema per farlo.
Maggiori info (in italiano) su
http://nuke.vbcorner.net/Articles/V...Outlook/tabid/107/language/it-IT/Default.aspx