MSScriptControl «Указанное приведение недопустимо» при представлении объекта в VBScript - PullRequest
5 голосов
/ 13 июня 2009

Я пытаюсь реализовать возможность сценариев для моего приложения. Я использую код ниже. Всякий раз, когда я создаю экземпляр нового 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 ]

3 голосов
/ 13 июня 2009

Я предполагаю, что класс ApiExposed не виден COM - он должен быть для взаимодействия VBScript с ним.

1 голос
/ 23 апреля 2012

У меня были похожие проблемы с этим.

Убедитесь, что вы используете [ComVisible(true)] для класса и методов. Также сделайте свой класс ОБЩЕСТВЕННЫМ!

...