将对象暴露给VBScript时,MSScriptControl'指定的强制转换无效'

时间:2009-06-13 08:55:21

标签: c# api vbscript scripting

我正在尝试为我的应用程序实现脚本功能。我正在使用下面的代码。每当我实例化一个新的Api对象时,该应用程序应该退出(稍微测试一下:p)

但是,应用程序在script.AddObject(...)崩溃并出现错误Specified cast is not valid.这里是否缺少一步?

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

2 个答案:

答案 0 :(得分:3)

我的猜测是,ApiExposed类不是COM可见 - 它需要按顺序让VBScript与它进行交互。

答案 1 :(得分:1)

我遇到了类似的问题。

确保在类和方法上使用[ComVisible(true)]。 另外,让你的班级PUBLIC!