2010-04-03 66 views
0

我試圖用InvokeSelf爲Silverlight和HTML通訊: InvokeSelf可以採取的對象[]作爲在撥打電話時參數:如何將Anonymous委託設置爲InvokeSelf的一個參數?

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

話,我想做出像匿名委託一個電話:

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

我得到的錯誤說: 無法轉換爲鍵入「對象」匿名方法,因爲它不是一個委託類型

如何解決這個問題呢?

回答

1

問題是,您不能將匿名方法分配給object。這是因爲C#編譯器不知道應該使用什麼委託類型。您可以通過顯式創建委託來修復代碼。由於這是Silverlight的,你也可以用更簡潔的lambda表達式表示法:

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

這麼說,我不知道是否有可能委託傳遞給JavaScript,但現在應該可以編譯代碼並嘗試。