Autor Thema: Herausfinden, ob ein Objekt eine bestimmte Methode / Property hat...  (Gelesen 2079 mal)

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.883
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Folgendes Szenario: Ich habe eine Funktion, in die alles mögliche übergeben werden kann... Jetzt möchte ich herausfinden, ob das, was da übergeben wurde, eine bestimmte Property oder Methode hat (in Java hat ja beispielsweise fast jede Klasse eine toString()- Methode, aber in LotusScript sind wir da ja noch nicht so weit)... Gibt es eine Möglichkeit, das abzufragen?

Also ob eine übergebene Variable überhaupt ein Objekt ist, kriege ich ja mit IsObject( myObject ) raus.
Ob das Objekt dann zu einer mir bekannten Klasse gehört kann ich ja über myObject isA "NotesDocument" abfragen...
Was mache ich aber, wenn ich keine Ahnung habe, was ich da habe... und wissen will, ob das Ding z.B. eine Property "Title" hat, oder eine Property "Text" o.ä...

Jemand ne Idee für mich?
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline umi

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.062
  • Geschlecht: Männlich
  • one notes to rule'em all, one notes to find'em....
    • Belsoft AG
Hallo
Evtl. mit einem Error Handler und dann testen ob ein Aufruf object.Titel einen Fehler liefert ?
Gruss

Urs

<:~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Jegliche Schreibfehler sind unpeabischigt
http://www.belsoft.ch
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~:>

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.883
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Ja, das wäre meine Fallback- Lösung... Aber geht das nicht eleganter?
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline pram

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.170
  • Geschlecht: Männlich
    • Foconis Object Framework
Du könntest das Interface Konzept wie in Java verfolgen:

jedes Objekt hat eine .implements(interfaceName) Methode, darüber kann das Objekt "gefragt" werden
ob ein bestimmtes Interface implementiert ist. Sagt es "ja", so muss es auch alle im Interface bereit gestellten Methoden implementieren.

Code
If objA.implements("Comparable") and objB.implements("Comparable") then
     objA.compareTo(objB)
end if

Mag anfangs ein wenig umständlich aussehen, man kann das Ganze aber noch etwas ausbauen, so dass es typsicher wird und Fehler sehr schnell zur Compilezeit auffallen (z.B. falsche Parameteranzahl).

Werbung: Wir verwenden das so in unserem Framework: http://www.foconis-object-framework.de kannst du dir ja mal ansehen.

Ansonsten bleibt dir wohl nur der von Umi vorgeschlagene Errorhandler.

Werkzeuge wie Reflection sind soweit ich weiß in LS nicht möglich (obwohl es der Debugger z.B. kann)

Gruß
Roland
Wie man das sogar noch einigermaßen Typsicher hinbekommt, dass Fehler zur Compilezeit
Roland Praml

IBM Certified Application Developer - Lotus Notes and Domino 8
Ich verwende das Foconis Object Framework

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.883
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Das klingt sehr interessant aber auch sehr aufwändig... Aber wenns um Erweiterbarkeit/Flexibilität geht, ist das sicherlich der richtige Weg. konkret geht es mir in meinem Fall darum, jedes beliebige Objekt im Bedarfsfall in ein Log dumpen zu können. Also Quasi die Ansicht im Debugger reduziert auf das, was mir wesentlich erscheint, in einem (error)- Log anzuzeigen für Code, der sich nicht debuggen lässt. Da muss ich halt die eingebauten Klassen abbilden (was nicht schwer aber halt auswändig ist) und mir dann für eigene Klassen was ausdenken. Bisher habe ich das immer manuell gemacht, aber ein Framework wäre natürlich nicht schlecht... Na, dann schau ich mir den Link mal an...
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz