我正在尝试将我的ScriptSharp版本从0.6.2升级到0.7.1,以利用新的泛型功能。我遇到的最后一个问题是我不知道如何解决这个问题:在进行Ajax调用时,编译器失败并显示消息“检查您的C#源编译并且您没有使用不支持的功能”。< / p>
以下是代码:
jQuery.Ajax(
new jQueryAjaxOptions(
"url", url,
"type", "GET",
"dataType", "html",
"contentType", "application/json",
"processData", false,
"success", (AjaxRequestCallback<object>)delegate(object result, string textData, jQueryXmlHttpRequest<object> XMLHttpRequest)
{
container.Html(XMLHttpRequest.ResponseText);
Type.InvokeMethod(null, "ajaxUnBlock", null);
},
"error", (AjaxErrorCallback<object>)delegate(jQueryXmlHttpRequest<object> request, string textData, Exception e)
{
//Debug.TraceDump(XMLHttpRequest);
}
)
);
我知道是造成这种情况的代表。如果我要填充jQueryAjaxOptions的属性(而不是提供键/值的字典),那么当我双击错误窗口中的错误时,它会指向指定成功委托的行。
我似乎能够通过创建一个方法而不是使用匿名委托来解决它,并且编译器错误消失了,但我想避免走这条路,如果可能的话,因为我有大量的必须以这种方式转换的代码。
有没有人有这方面的经验,可以让我知道为什么会发生这种情况,有什么办法可以让我的匿名代表再次编译?
非常感谢提前
修改 使包含此匿名委托 static 的函数可以解决此问题。在研究这个问题时,我在Github(https://github.com/NikhilK/scriptsharp/issues/22)上发现了一个看似相关的封闭问题 - 我现在唯一不确定的是这种行为是否有意。