Я работаю над приложением 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 в качестве параметра состояния.