2010-12-09 1 views
1

Wie kann ich überprüfen, ob ein Objekt eine bestimmte Schnittstelle in VB6 implementiert? Ich habe den folgenden Code:Prüfen, ob ein Objekt eine bestimmte Schnittstelle in VB6 implementiert

Dim nodes As MSXML2.IXMLDOMNodeList 
Dim node As MSXML2.IXMLDOMNode 
Dim element As MSXML2.IXMLDOMElement 

... 

For Each node In nodes.childNodes 
    If (node is MSXML2.IXMLDOMElement (how to do this?)) Then 
     Set element = node 
     ... 
    Else 
     ... 
    End If 

Antwort

4

If (node is MSXML2.IXMLDOMElement (how to do this?)) Then 

mit

If TypeOf node Is MSXML2.IXMLDOMElement Then 

FYI: Bevor TypeOf verwenden Sie müssen sicher sein, node nicht Nothing ist sonst wird es einen Laufzeitfehler Objektvariable zu erhöhen (oder mit Block) nicht gesetzt.

0

In diesem Fall hat der Funktionsaufruf Type-Name (Knoten) return „MSXML2.IXMLDOMElement“ für Sie? Wenn ja, könnte das die Lösung sein.

+0

Tatsächlich gibt TypeName wahrscheinlich den statischen Typ zurück, nicht den dynamischen Typ, also wird dies wahrscheinlich nicht helfen. – Alain

+0

Nun, nach diesem Artikel (http://zone.ni.com/devzone/cda/tut/p/id/2949) können Sie den Laufzeittyp einer Variant mit TypeName() ermitteln, also gehen Sie voran und geben Sie a Schuss. Versuchen Sie es mit Knoten als eine Variante, wenn es nicht mit Knoten als MSXML2.IXMLDOMNode funktioniert. – Alain

+0

danke, TypeName hat auch ohne Variante funktioniert. Obwohl ich String-Vergleich nicht mag. Das fühlt sich für mich nicht sauber an. Ich werde es als endgültige Lösung verwenden, wenn nichts sauberer gefunden wird. –

0

Ordnen Sie es einfach "Element" zu und wenn die Zuweisung fehlerhaft fortgesetzt wird, versuchen Sie die nächste Schnittstelle. Ersetzen