У меня есть устаревшее клиентское приложение, написанное на .net 4.6.1, которое использует данные сервера WCF.Я пытаюсь заменить сервер WCF приложением ASP.NET Core и сериализацией Protobuf.Я использую библиотеки:
Попытка десериализации возвращаемого содержимого на стороне клиента, как показано ниже:
var resultData = ProtoBuf.Serializer.Deserialize<ExcelDropdownNode>(response.Content.ReadAsStreamAsync().Result);
Но я получаю сообщение об ошибке в библиотеке protobuf:
Невозможно разрешить тип: System.String, System.Private.CoreLib, Version = 4.0.0.0, Culture = нейтральный, PublicKeyToken = 7cec85d7bea7798e (вы можете использовать событие TypeModel.DynamicTypeFormatting для предоставления настраиваемого сопоставления)
Есть идеи, что я мог сделать неправильно?
В качестве примечания я должен возвращать динамические данные на сервере, и protobuf не очень этому рад.Я пометил List<object>
свойство с DynamicType=True
и изменил все ValueTypes на строку (т.е. 4 -> "4").Это позволило сериализации на стороне сервера работать.
Динамическое свойство в ExcelDropDownCode выглядит следующим образом:
[ProtoMember(1, DynamicType = true)]
public List<object> DataItems
{
get { return dataItems; }
set { dataItems = value; }
}