Microsoft ASP.NET AJAX クライアント ライブラリを利用したい Silverlight アプリケーションに取り組んでいます。Silverlight 2 の一部である HTML Bridge を使用してライブラリを呼び出しています。Silverlight は、JavaScript とマネージ コードの間での型の受け渡しをサポートしていますが、問題にぶつかりました。
Microsoft ASP.NET AJAX クライアント ライブラリには「型システム」が含まれており、フレームワークが行うことの 1 つは、パラメーターが正しい型であることを検証することです。私が呼び出している特定の関数はSys.Application.addHistoryPoint
で、検証コードは次のようになります。
var e = Function.validateParams(arguments, [
{name: "state", type: Object},
{name: "title", type: String, mayBeNull: true, optional: true}
]);
すべての種類の CLR 型を状態パラメーターとして渡そうとしました (C# 構造体、[ScriptableTypes]、Dictionary 型など)。エラーが発生するたびに:
"Sys.ArgumentTypeException: タイプ 'Function' のオブジェクトをタイプ 'Object' に変換できません
このエラーは明らかにパラメーターの検証から来ています...しかし、なぜASP.NET AJAXは私の型が関数であると考えるのですか? MS AJAXの型検証を理解している人はいますか?
呼び出すHtmlPage.Window.Eval("...")
などの回避策を実行して、JS 統合を文字列として渡すことができることはわかっていますが、そうしたくありません。状態パラメーターとして実際の .NET 型を渡したいです。