2009-06-13 21 views
5

Estoy tratando de implementar la capacidad de escritura en mi aplicación. Estoy usando el código a continuación. Cada vez que una instancia de un nuevo objeto Api, la aplicación se supone que debe dejar de fumar (una pequeña cosa prueba: p)MSScriptControl 'La conversión especificada no es válida' al exponer un objeto a VBScript

Sin embargo, la aplicación se bloquea en script.AddObject(...) con el error Specified cast is not valid. ¿Hay un paso que me falta aquí?

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

Respuesta

3

Mi conjetura es, la clase ApiExposed no es visible COM - que tendrá que ser con el fin de VBScript para interactuar con él.

1

Tuve problemas similares a esto.

Asegúrese de utilizar [ComVisible(true)] en la clase y los métodos. ¡Además, haz que tu clase sea PÚBLICA!

Cuestiones relacionadas