我在Internet Explorer中托管我的WinForms控件。另外,当javascript代码尝试访问它们时,我已经实现了IExpando接口,以便能够在我的C#代码中模拟未显示的字段和方法。例如
var myobj = new ActiveXObject('server.object');
myobj.Foo = "FooText";
myobj.Bar("BarText");
请注意,我的C#类不包含Foo字段和Bar方法。将使用参数name =“Foo”调用IExpando.AddField,但不会执行IExpando.AddMethod。 如果是myobj.Bar(“BarText”);只会执行IReflect.GetMethods,IReflect.GetProperties和IReflect.GetFields方法。
有谁知道为什么没有调用IExpando.AddMethod?
谢谢, 保罗。
答案 0 :(得分:0)
我认为从js开始,AddMethod永远不会被调用。因为“方法”实际上只是以委托作为其值的属性。调用这样的函数实际上是获取一个属性然后调用它。
在这种情况下,您将获得一个成员缺少异常,与js对象相同。您可以尝试先设置它:
var myobj = new ActiveXObject('server.object');
myobj.Foo = 'FooText';
myobj.Bar = function(b) { console.log(b); };
myobj.Bar('BarText');
那会有用!否则我认为您需要提前了解它并将其返回GetProperties。