Вот мой код VBScript
Set object= CreateObject("Demo. Object")
Set service= CreateObject("Demo.ManageServer ")
service.SetObject object
Я получаю следующее сообщение:
Ошибка : неверный вызов или аргумент процедуры: 'Service.SetObject'Код: 800A005
Демо. Сервис - это C # COM-объект
[ProgId("Demo.ManageServer")]
[Guid("A4F0A0F0-9C0C-4C71-AD58-A36F750D92FE")]
[ComVisible(true)]
public class MyServer :IMyServer
{
public void SetObject (IMyObject obj) { … }
}
Интерфейс:
[TypeLibType(TypeLibTypeFlags.FDual | TypeLibTypeFlags.FNonExtensible | TypeLibTypeFlags.FDispatchable)]
[Guid("B3ACBCAD-5ED3-4113-B9D2-FC67FA49012B")]
public interface IMyServer
{
[DispId(1)]
void SetObject (IMyObject obj);
}
ПРИМЕЧАНИЕ:
1) Когда я посылаю 'Nothing' в качестве параметра функции, она работает нормально
2) Когда я меняю интерфейс функции для получения объекта, она также работает снова.
Знаете ли вы, почемуиспользуя явный тип в сигнатуре функции, VBScript выдает исключение?
Я уже пробовал, и это не работает.Кроме того, если получателем является C ++ COM-объект, у меня нет проблем с отправкой как Управляющих, так и неуправляемых объектов. Если получателем является C # COM-объект, я могу передать управляющий объект, только если использую скобки
manageServer.PrintType (nativeObject) Без скобок я получаю то же исключение, но в случае, если я пытаюсь отправить в неуправляемый код неуправляемый объект, ничего не поможет