Καλημέρα. Θα κάνω μία απλουστευμένη περιγραφή του τι έχω και του προβλήματος. Ελπίζω κάποιος να ξέρει κάτι παραπάνω γιατί έχω αρχίσει να κοιτάω με άλλο μάτι το πληκτρολόγιο (break ... smash ... chop...)
Έχω ένα αντικείμενο τύπου Field σε VB.NET.
Class Field
Default Property Item (index as integer) as Field...
Default Property Item (index as integer, Optional b as boolean = false) as Field...
Default Property Item (index as integer, Optional opt as string = "", Optional a as integer = 0, Optional b as boolean = false) as Field...
end Class
και ένα δεύτερο τύπου Msg
Class Msg
Property Fields () as Field
end Class
Χρησιμοποιώ το ScriptControl για να εκτελέσω μέσα από την εφαρμογή μου σε VB.NET ρουτίνες σε VBScript που χρησιμοποιούν το παραπάνω αντικείμενο. Το αντικείμενο το περνάω στο context του Script με την AddObject μέθοδο του ScriptControl.
Το πρόβλημα είναι οτι δεν μπορώ να χρησιμοποιήσω τις properties του Fields, εκτός από την πρώτη υλοποίηση της Item, δηλ αυτή που δεχεται απλά ένα int. Αν δοκιμάσω να καλέσω την Item με κάποιο άλλο set παραμέτρων παίρνω το παρακάτω error.
Wrong number of arguments or invalid property assignment: 'myMsg.Fields.Item'
Η κλήση μου ήταν myMsg.Fields.Item("2","*",0,false)
Επειδή τα 3 τελευταία arguments σε αυτή την κλήση είναι optional δοκίμασα αρχικά να τρέξω κάτι σαν αυτό
myMsg.Fields.Item("2")
To αποτέλεσμα είναι να μετατρέψει η VBScript το "2" σε 2 και να καλέσει την πρώτη υλοποίηση της Item. Μετά ανακάλυψα οτι η VBScript δεν υποστηρίζει Optional Arguments.
Τελικά μπορώ να κανω μια κλήση με τα 4 arguments?
PS: Μερικές φορές παίρνω σαν σφάλμα "Object does not support automation", μάλλον επειδή δεν βρίσκει το Field το Item που του ζητώ. Τι σχέση έχει το Automation???? Δεν χρησιμοποιώ OLE.
Ευχαριστώ για την υπομονή σας!