, вызывающим .NET COM-объект из VBScript

Я использую VS 2008 и Windows 7.
Получил класс .NET C #, который представлен как COM-объект.

[Guid("E5014B85-FCB2-4F0D-95EC-F741395A7923")]
[InterfaceType(ComInterfaceType.InterfaceIsDual)]

public interface DSystem
{

    [DispId(1610809354)]
    void setProperties(IDictionary propertymap);

}

COM-объект вызывается из VBScript

dim dSystem
set dSystem = CreateObject("MYCOMOBJECT")

Dim objDictionary
Set objDictionary = CreateObject("System.Collections.Hashtable")
objDictionary.Add "PROP1", "abc"
objDictionary.Add "PROP2", "zyx"

dSystem.setProperties(objDictionary)

Все работает нормально ... но, изменение типа возвращаемого значения с void на bool

    [DispId(1610809354)]
    bool setProperties(IDictionary propertymap);

и

 success = dSystem.setProperties(objDictionary)

вызывает ошибку

Ошибка выполнения Microsoft VBScript «800a0005»
Неверный вызов процедуры или аргумент


Кажется, с файлом .tlb все в порядке

[id(0x6003000a)]
HRESULT setProperties(
[in] IDictionary* propertymap, 
[out, retval] VARIANT_BOOL* pRetVal);


Что я делаю не так?
Кто-нибудь может мне подсказать?

7
задан Lankymart 16 December 2015 в 15:42
поделиться