Использование DataContractJsonSerializer - PullRequest
2 голосов
/ 05 октября 2010

Я пытаюсь разместить службу WCF, которая отвечает на входящие запросы, предоставляя поток вывода json. У меня есть следующий тип

[DataContract]  
[KnownType(typeof(List<HubCommon>))]
[KnownType(typeof(Music))]
[KnownType(typeof(AppsAndPlugins))]
[KnownType(typeof(Notifications))]
[KnownType(typeof(Scenes))]
[KnownType(typeof(Skins))]
[KnownType(typeof(Ringtones))]
[KnownType(typeof(Alarms))]
[KnownType(typeof(Widgets))]
[KnownType(typeof(Wallpapers))]
[KnownType(typeof(Soundsets))]
public class HubCommon{}

В моем файле * .svc.cs я делаю следующее

List<HubCommon> hubContent = _ldapFacade.GetResults(query);
        MemoryStream stream = new MemoryStream();
        DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(HubCommon));          
        serializer.WriteObject(stream,hubContent);

По сути, я пытаюсь сериализовать List для Json, но я получаю следующую ошибку при выполнении «WriteObject»: -

Сервер обнаружил ошибку при обработке запроса. Сообщение об исключении: «Тип» System.Collections.Generic.List`1 [[HubContentCore.Domain.HubCommon, HubContentCore, Version = 1.0.0.0, Culture = нейтральный, PublicKeyToken = null]] 'с именем контракта данных' ArrayOfHubCommon: http://schemas.datacontract.org/2004/07/HubContentCore.Domain' не ожидается. Добавьте любые типы, которые не известны статически, в список известных типов, например, с помощью атрибута KnownTypeAttribute или добавив их в список известных типов, переданных в DataContractSerializer. '

Что мне здесь не хватает?

Заранее спасибо.

1 Ответ

1 голос
/ 05 октября 2010

Тип вашего DataContractJsonSerializer - HubCommon, но вы пишете объект типа List<HubCommon>, а HubCommon не добавляется в KnownTypAttribute

...