我已经建立了这个小型的Web应用程序。它有一个activex控件通过javascript将非托管代码返回到silverlight应用程序。在silverlight中,我对返回的值执行编组操作。当我只执行GetSize()的简单操作时,我会遇到一个令人费解的错误。这让我想到了一个问题:是否可以在silverlight中执行marhsalling操作,如果是这样的话?
答案 0 :(得分:3)
Silverlight的安全模型和沙箱不允许“透明”(用户代码和应用程序)执行p / invokes,可信操作或任何类似的操作。
如果您已经安装了ActiveX控件并且可以在网页上使用,则需要使用Silverlight的HTML互操作性功能来自行编组数据。有一个MSDN article about the HTML bridge特定于Silverlight 2,但你会发现它在新版本的Silverlight中也是一样的。
这假设您的ActiveX控件可以通过浏览脚本/ JavaScript来访问。
虽然数字和其他一些原语的编组在平台上运行良好,但您最终可能会通过使用字符串从ActiveX控件中移出所有数据,然后在Silverlight客户端上将其解析回来。
这至少可以启用您的方案。