2009-06-13 12 views
5

Ich versuche Scripting-Funktionen für meine Anwendung zu implementieren. Ich verwende den folgenden Code. Jedes Mal, wenn ich ein neues Api Objekt instanziiert, wird die Anwendung soll beenden (eine kleine Test Sache: p)MSScriptControl 'Angegebener Cast ist nicht gültig' beim Aussetzen eines Objekts an VBScript

jedoch die Anwendung abstürzt bei script.AddObject(...) mit dem Fehler Specified cast is not valid. Gibt es einen Schritt, den ich hier fehlt bin?

public class ApiExposed 
{ 
    public string ModuleName; 

    public void Exit() 
    { 
     System.Environment.Exit(0); 
    } 
} 
public class Api 
{ 
    ScriptControlClass script; 
    ApiExposed ApiObj; 

    public Api() 
    { 
     ApiObj = new ApiExposed(); 

     script = new ScriptControlClass(); 
     script.Language = "VBScript"; 
     script.AddObject("tbapi", (object)ApiObj, true); 

     script.Eval("tbapi.Exit()"); 
    } 
} 

Antwort

3

Meine Vermutung ist, die ApiExposed Klasse nicht COM sichtbar ist - es muss sein, um für VBScript mit ihr zu interagieren.

1

Ich hatte ähnliche Probleme.

Stellen Sie sicher, dass Sie [ComVisible(true)] für die Klasse und die Methoden verwenden. Machen Sie Ihre Klasse PUBLIC!

Verwandte Themen