Я делаю упражнение пальцем и пытаюсь написать приложение, которое позволяет моему компьютеру и мобильному телефону Windows общаться через Bluetooth через последовательный порт.
Теперь я столкнулся с проблемой с сериализацией объектов. Двоичная сепарация не поддерживается .Net Compact Framework, поэтому я выбираю XmlSerialization. Я написал библиотеку с двумя классами. ObjectCarrier, который должен содержать другие классы, чтобы у меня был общий способ отправки и получения. И есть костюм класса MusicAlbum.
Вся установка отлично работает на стороне ПК. Мобильный сайт постоянно выдает мне следующую ошибку:
System.InvalidOperationException: при создании документа XML произошла ошибка. ---> System.InvalidOperationException: тип TransferObject.MusicAlbum не ожидался. Используйте атрибут XmlInclude или SoapInclude, чтобы указать типы, которые не известны статически.
Странно то, что если я использую ObjectCarrier и помещаю что-то вроде строки или объекта datetime в полезную нагрузку, это работает на мобильном телефоне.
Что я делаю не так с моим классом MusicAlbum?
--- | MusicListing.cs | -------------
using System;
using System.Collections.Generic;
using System.Text;
namespace TransferObject
{
public class MusicAlbum
{
public string AlbumName { get; set; }
public string ArtistName { get; set; }
}
}
--- | TransferObject.cs | -----------
using System;
using System.Xml.Serialization;
namespace TransferObject
{
[XmlInclude(typeof(MusicAlbum))]
public class ObjectCarrier
{
public Object PayloadObject { get; set; }
}
}
Спасибо за предложение. Это помогло мне понять, как я это делаю. При использовании абстрактного класса мне больше не нужен носитель.
Причина, по которой это не сработало, была в том, что я сам виноват, что вместо библиотеки для мобильных устройств была библиотека windows После изменения этого ваш код работал отлично. С обеих сторон, насколько я тестировал сейчас. Если что-то изменится, я обновлю это.