[英]Passing an array from managed code to unmanaged C++ ActiveX component
[英]Reading JScript (associative) array from .NET ActiveX component
我正在用C#(.NET 4.0)實現一個ActiveX組件,我在訪問JScript數組時遇到了麻煩; 在這種情況下是一個關聯數組。 在HTML頁面中,我正在調用我的組件:
MyComponent.MyMethod({ "foo": "bar" });
我的ActiveX組件具有以下方法簽名:
public void MyMethod(dynamic someArray)
{
// someArray will be a RCW (__ComObject)
}
我想我可以通過IDispatch調用此對象上的所有常用內容。 但是,JavaScript陣列上可用的任何屬性和方法都不可訪問。
我已經使用了這篇博客文章的部分內容來嘗試檢查我實際獲得的COM對象的類型,但是DumpTypeInfo
顯示的DumpTypeInfo
方法只給了我JScriptTypeInfo,它沒有定義任何函數。
很多文章都討論了如何將數組從.NET轉換為JavaScript,但另一種方式似乎也不是那么簡單。 有任何想法嗎?
PS:我已經嘗試了很多其他選項,但提到它們都可能在這一點上無濟於事。
我想知道你是否解決了這個問題。 我已經嘗試了自己的WebBrowser控件和ObjectForScripting屬性分配給以下類的實例
[ComVisible(true)]
public class ObjectForScripting {
public void Call(dynamic o) {
Type t = o.GetType();
var result = t.InvokeMember("a", System.Reflection.BindingFlags.GetProperty, null, o, null);
}
}
文件執行window.external.Call({a:'b'})
,一切似乎都正常, result
得到值“b”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.