Я пытался использовать protobuf-net с MonoTouch, но я понятия не имею, как, и, несмотря на то, что я слышал, что это возможно, я не смог найти ни одного учебного пособия или какого-либо примера, который действительно работает.
Марк Грэвелл подтвердил в своем блоге , что он работает на MonoTouch.Я также просмотрел блоги двух людей, о которых он говорит в этой статье, но я не нашел ничего, связанного с protobuf. * 1005 *
Не имея никаких сведений по этому вопросу, я решил скачать protobuf-net и попробоватьэто все равно.Поэтому я создал следующий объект для целей тестирования:
[ProtoContract]
public class ProtoObject
{
public ProtoObject()
{
}
[ProtoMember(1)]
public byte[] Bytes { get; set; }
}
и попытался отправить его через WCF из службы, работающей в Windows, используя интерфейс [ServiceContract]
с
[OperationContract]
ProtoObject GetObject();
, ноэкземпляр ProtoObject, полученный на устройстве, всегда равен нулю.Это не совсем неожиданно, так как я прочитал, что для того, чтобы protobuf-net работал с WCF, вам нужно изменить app.config / web.config .
Это немного сложно сделать, так как в проекте MonoTouch нет app.config, но я еще не сдался.Чтобы заменить app.config, я попытался программно добавить ProtoEndpointBehavior к поведению конечной точки клиента, и там я столкнулся со стеной.ProtoBuf.ServiceModel.ProtoEndpointBehavior, доступный в .NET 3.0 Реализация protobuf-net недоступна в выпуске iOS.
Как мне использовать protobuf-net для десериализации объектов, полученных из оконечной точки WCF на основе Windowsиспользуя сериализацию protobuf-net.