Передайте тип Silverlight в Microsoft AJAX и передайте проверку параметров - PullRequest
0 голосов
/ 09 сентября 2008

Я работаю над приложением Silverlight, в котором я хочу использовать клиентскую библиотеку Microsoft ASP.NET AJAX. Я звоню в библиотеку с помощью HTML Bridge, который является частью Silverlight 2. Silverlight получил отличную поддержку для передачи типов между JavaScript и Managed Code, но теперь я столкнулся с проблемой.

Клиентские библиотеки Microsoft ASP.NET AJAX включают в себя «систему типов», и одна из функций, которую выполняет инфраструктура, заключается в проверке правильности типа параметров. Конкретная функция, которую я вызываю, - Sys.Application.addHistoryPoint, и код проверки выглядит следующим образом:

var e = Function.validateParams(arguments, [
    {name: "state", type: Object},
    {name: "title", type: String, mayBeNull: true, optional: true}
]);

Я пытался передать все виды типов CLR в качестве параметра состояния (структуры C #, [ScriptableTypes], типы словарей и т. Д.) И каждый раз, когда я получаю сообщение об ошибке:

"Sys.ArgumentTypeException: объект типа« Функция »не может быть преобразован в тип« Объект »

Эта ошибка, очевидно, происходит из-за проверки параметров ... Но ПОЧЕМУ ASP.NET AJAX считает мои типы функциями? Кто-нибудь понимает проверку типа в MS AJAX?

Я знаю, что могу сделать обходные пути, такие как вызов HtmlPage.Window.Eval("...") и передать мою интеграцию JS в виде строк, но я не хочу этого делать. Я хочу передать реальный тип .NET в качестве параметра состояния.

1 Ответ

1 голос
/ 16 сентября 2008

Я нашел довольно хороший обзор этого здесь , но даже этот обзор, казалось, охватывал все сценарии, кроме того, который вы упомянули. Мне интересно, если это не может быть сделано, потому что объекты JavaScript действительно являются функциями (более или менее).

Что если вы написали функцию-обертку, которая могла бы создать объект состояния, используя строку?

...