JavaScript에서 Silverlight 쪽의 메서드를 호출할 때, C# Dictionary 형식을 전달하려면 어떻게 해야 하는지에 대해서 경민 씨가 자이닉스 개발부 블로그에 글을 써 주었다. (Silverlight 함수를 Javascript에서 호출) 좀더 자세한 내용은 MSDN의 Constructing Managed Types from JavaScript라는 문서를 참고하면 도움이 될 것이다.
JavaScript에서 createManagedObject 메서드를 이용해서 C# Dictionary<T, T> 처럼 관리되는 타입을 생성하면, JavaScript 개체처럼 쓸 수 있는 래퍼를 통해서 JavaScript 쪽에 노출된다. 그렇기 때문에 키가 string 타입인 C# Dictionary 만 사용할 수가 있다.
실제로 JavaScript의 개체(Object)는 키가 문자열인 사전 데이터 타입이라고 말할 수가 있다. 아래처럼 currentTime 이라는 멤버 변수를 사용하는 예제 코드가 있다고 하자.
[code js]
var userObject = new Object();
userObject.currentTime = new Date();
alert(userObject.currentTime);
[/code]아래 코드는 위에서 제시한 코드와 완전히 동일한 의미를 지닌다. 즉, C# 등의 언어에서 키가 문자열인 사전 데이터 타입을 쓰는 문법과 동일하다는 것을 알 수가 있다.
[code js]
var userObject = new Object();
userObject["currentTime"] = new Date();
alert(userObject["currentTime"]);
[/code]참고로 JavaScript 개체를 한 번에 초기화하는 방법도 있는데, 이런 표현 형식을 JSON 이라고 한다.
[code js]
var userObject = { "currentTime" : new Date() };
alert(userObject.currentTime);
[/code]