【问题标题】:how to set Anonymous delegate as one parameter for InvokeSelf?如何将匿名委托设置为 InvokeSelf 的一个参数?
【发布时间】:2010-04-03 10:55:47
【问题描述】:

我尝试使用 Silverlight 的 InvokeSelf 与 html 进行通信: InvokeSelf 可以在调用时将 object[] 作为参数:

  ScriptObject Myjs;
  ScriptObject obj = Myjs.InvokeSelf(new object[] { element  }) as ScriptObject;

然后我想像匿名代表一样拨打电话:

Object obj;
obj = InvokeSelf(new object[] { element, delegate { OnUriLoaded(reference); } });

我得到错误说: 无法将匿名方法转换为类型“对象”,因为它不是委托类型

如何解决这个问题?

【问题讨论】:

    标签: c# html silverlight


    【解决方案1】:

    问题是您不能将匿名方法分配给object。这是因为 C# 编译器不知道应该使用什么委托类型。您可以通过显式创建委托来修复代码。由于这是 Silverlight,您还可以使用更简洁的 lambda 表达式表示法:

    obj = InvokeSelf(new object[] 
      { element, new Action(() => OnUriLoaded(reference)) }); 
    

    也就是说,我不确定是否可以将委托传递给 JavaScript,但您现在应该能够编译代码并尝试一下。

    【讨论】:

      最近更新 更多