日期:2014-05-18  浏览次数:20855 次

【100分】Javascript 调用 C#的WebBrowser中的external函数, 出现问题
总述: 程序是一个form.
  内部一个WebBrowser, 实现了 window.external 。 其中需要暴露给 Js的都设置了 ComVisble(true)

环境:
  C#文件:
  有暴露的类
  [ComVisble(true)]
  public class Class1(){ public Class1(){} }
  有2个函数  
  1. Class1 GetClass1(){ return new Class1() };
  2. bool ValidateClass1( Class1 clsInstance1 ){ return true; }

  Js文件:
  1. var clsInstance1 = GetClass1();  
  2. alert( ValidateClass1( clsInstance1 );

 问题:
  Js引擎能很好的得到 clsInstance1 , 甚至你 alert(clsInstance1) 都能得到消息 "Class1 xxxxx"
  但是一旦把 clsInstance1 作为函数 ValidateClass1的函数参数变量 ,则会得到异常错误 Class does not support Automation

 这个问题把我弄得很崩溃,明明js可以创建变量 clsInstance1 , 却无法作为 ValidateClass1 的参数。
 后来我把 ValidateClass改成了 ValidateClass( object clsInstance1 ) 
 js不报错了,但是C#显示 clsInstance1 成了 __System_Com_object , 而且无法转换成 Class1

我被这个问题搞死了,js明明可以创建这种类,并且可以alert,为什么作为参数就会说 does not support automation!!

求大家帮助!

如果解决愿意200分!!!
谢谢!!!!
 

------解决方案--------------------
是winform?
------解决方案--------------------
别沉了,顶下,我试了,不行。
------解决方案--------------------
winform 程序怎么还有js调用。 不太明白。
------解决方案--------------------
学习下 winform调用js
------解决方案--------------------
js 使用的com类型要支持自动化
就是说Class1要实现idispatch
试试
 [AutomationProxy(true)]