Domino 9 und frühere Versionen > Entwicklung
Casts in Lotusscript
oz:
Hallo Forum,
Ich habe einen Konstruktor der folgendermaßen aussieht.
Sub New (doc As Variant)
On Error Goto errorhandler
If doc Isa "NotesUIDocument" Then
Messagebox "is a NotesUIDocument"
Dim sd As NotesUIDocument
Set sd = doc
Messagebox sd.FieldGetText("fldDBServer")
Else
Messagebox "not"
End If
End Sub
Der Konstruktor nimmt soll also UIDocuments aber auch a NotesDocuments entgegennehmen. In Abhängigkeit des Typs soll der Konstruktor den entsprechenden Typ auflösen und einer neuen Variable (sd) zuweisen.
Danach möchte ich auf dem neu erzeugten methoden ausführen, also wie im Beispiel FieldGetText(). Dann bekomme ich allerdings den Fehler "Object Variable not set".
Kann mir bitte jemand erklären, wie ich in Lotusscript diesen Cast hinbekommen oder was hier falsch läuft?
Vielen Dank im Voraus OZ.
flaite:
Tja. isA gibts nicht. Oder ???
Versuch mal die Funktion Datatype (s. NotesHilfe). Aber wenn ich nicht völlig falsch liege, dann bekommst du hier für NotesUIDocument und NotesDocument dasselbe Nümmerschen.
Eine Möglichkeit wäre mit Errrorhandling und Resume Next im Konstruktor zu arbeiten, aber das ist sicher nicht das Gelbe vom Ei.
Mal so unter uns (manche bitte einfach mal weghören:)
Eine konsistente und einfache Reflection API, die so wichtig in Java geworden ist, gibt es in LotusScript einfach nicht. LotusScript hat andere Stärken.
Alternative: Nimm einfach 2 strictly typed Konstruktoren.
Einer nimmt ein NotesDocument. Der andere ein NotesUIDocument.
animate:
Ich glaube nicht, dass du in LS Methoden überlagern kannst, Axel.
Und vom IsA-Operator hab ich ehrlich gesagt auch noch nichts gehört.
Ich weiß zu wenig über das Problem, um den Sinn des Lösungsansatzes (zwei völlig verschiedene Klassen) in Frage zu stellen. Eigentlich kenne ich das Problem gar nicht, nur die angestrebte Lösung.
Ohne aber mehr darüber zu wissen halte ich persönlich den Ansatz für ganz schlecht und würde evtl. Vererbung verwenden. Also eine Basisklasse mit gemeinsamen Methoden und je eine spezielle Klasse für NotesDocument und NotesUIDocument.
eknori:
@Thomas: Aus der Designer Hilfe ;D
Determines if an object reference variable is of a specified class or a class derived from the specified class.
animate:
Hehe, das ist cool. Ich habe ehrlich noch nie davon gehört :)
Danke für den Hinweis!
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln