Tôi có hai lớp .NET được tiếp xúc qua COM interop - giả sử Foo và Bar, và tôi cần chuyển đối số kiểu Foo thành một phương thức được định nghĩa trong Bar. Một cái gì đó như thế này:Qua các đối số được gõ mạnh trong .NET COM interop
[ComVisible(true)]
public class Foo
{
// whatever
}
[ComVisible(true)]
public class Bar
{
public void Method(Foo fff)
{
// do something with fff
}
}
Khi tôi chạy sau VBS (sử dụng cscript.exe):
set foo = CreateObject("TestCSProject.Foo")
set bar = CreateObject("TestCSProject.Bar")
call bar.Method(foo)
tôi nhận được một lỗi:
D:\test.vbs(3, 1) Microsoft VBScript runtime error: Invalid procedure call or argument: 'bar.Method'
Tuy nhiên, nếu tôi thay đổi tuyên bố Phương thức cho điều này:
public void Method(object o)
{
Foo fff = (Foo)o;
// do something with fff
}
mọi thứ hoạt động. Tôi đã thử một số phép thuật với giao diện, thuộc tính, vv nhưng không may mắn cho đến nay.
Bất kỳ thông tin chi tiết nào?
Rất cám ơn
Nó sẽ hoạt động như được đăng, VBScript sử dụng kết buộc muộn. Cố gắng cải thiện đoạn mã của bạn để tạo một ví dụ không theo cùng một cách. –
@Hans - Tôi đã thêm đoạn mã VBS bị lỗi. Tất cả mọi thứ được sao chép/dán từ mã thực. Cảm ơn – Elephantik