Я использую 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);
Что я делаю не так?
Кто-нибудь может дать мне подсказку?