2009-06-13 9 views
5

Sto provando a implementare funzionalità di scripting per la mia applicazione. Sto usando il codice qui sotto Ogni volta che un'istanza di un nuovo Api oggetto, l'applicazione dovrebbe uscire (una piccola cosa di test: p)MSScriptControl 'Cast specificato non è valido' quando si espone un oggetto su VBScript

Tuttavia, l'applicazione si blocca a script.AddObject(...) con l'errore Specified cast is not valid. C'è un passo che mi manca qui?

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()"); 
    } 
} 

risposta

3

La mia ipotesi è, la classe non è ApiExposed COM visibile - si dovrà essere in ordine per VBScript per interagire con esso.

1

Ho avuto problemi simili a questo.

Assicurarsi di utilizzare [ComVisible(true)] sulla classe e sui metodi. Inoltre, rendi la tua classe PUBBLICA!