2014-09-25 2 views
1

словарь не serializeable, и, следовательно, не могут быть переданы моим клиентам JavaScript-код с помощью SignalR как JavaScript (псевдо) ассоциативного массива ...Использование SignalR, как мне отправить словарь (ассоциативный массив) в Javascript?

в .net, мой сложный тип:

public class MyClass { 
    public [primitive] whatever {get;set;} 
    ... 
    public Dictionary<string, string> Properties { get; set; } 
} 

и Javascript, я хотел бы, чтобы иметь возможность ссылаться на данные, как это:

data.Properties["key"] 

Update:

Я пытаюсь с сначала инициализировать строку и из нее, потому что я маршрутизирую экземпляр через SQL Service Broker. На этой линии:

XmlSerializer serializer = new XmlSerializer(typeof(T)); 

где Т TypeOf МойКласс

Была ошибка типа, отражающую [МойКласс]

Не могу сериализовать член [МойКласс] .Properties типа System.Collections.Generic .Dictionary`2 [[System.String, mscorlib, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089], [System.String, mscorlib, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089]], потому что он реализует IDictionary.

Я чувствую, что я собираюсь ответить на мой собственный вопрос ...

ответ

0

Я изменил:

XmlSerializer serializer = new XmlSerializer(typeof(T)); 

к:

DataContractSerializer serializer = new DataContractSerializer(typeof(T)); 

(и рассматриваются некоторые вопросы пространства имен ...)

3

SignalR использует Json.NET, который, безусловно, способен сериализовать Dictionary<string, string>. Вы должны иметь доступ к словарю из JS-кода точно так, как вы предлагаете в своем вопросе.

Вы пытались отправить экземпляр своего MyClass с помощью SignalR? Если да, то как это происходит?

+0

Мои извинения @ halter73, я сериализации к и от строка сначала ... (Я подпрыгиваю экземпляр объекта через SQL Service Broker). Я обновил вопрос. – Novox

Смежные вопросы