У меня есть два класса .NET, доступных через COM-взаимодействие - скажем, Foo и Bar, и мне нужно передать аргумент типа Foo методу, определенному в Bar. Примерно так:
[ComVisible(true)]
public class Foo
{
// whatever
}
[ComVisible(true)]
public class Bar
{
public void Method(Foo fff)
{
// do something with fff
}
}
Когда я запускаю следующую VBS (используя cscript.exe):
set foo = CreateObject("TestCSProject.Foo")
set bar = CreateObject("TestCSProject.Bar")
call bar.Method(foo)
Я получаю сообщение об ошибке:
D: \ test.vbs (3, 1) Ошибка выполнения Microsoft VBScript: недопустимый вызов процедуры или аргумент: 'bar.Method'
Однако, если я изменю объявление метода на это:
public void Method(object o)
{
Foo fff = (Foo)o;
// do something with fff
}
, все будет работать. Я пробовал магию с интерфейсами, атрибутами и т. Д., Но пока безуспешно.
Есть какие-нибудь идеи?
Большое спасибо