使用:
[ProtoContract(ImplicitFields = ImplicitFields.AllPublic)]
public class ExcelData
{
public int[] DataObjects { get; set; }
}
不要工作:
[ProtoContract(ImplicitFields = ImplicitFields.AllPublic)]
public class ExcelData
{
public object[] DataObjects { get; set; }
}
我的测试:
[TestMethod]
public void ProtoWithObjectArray()
{
var ex = new ProtoBufServiceClient(baseUrl);
var res = ex.Get(new SelectWorksheetRange());
}
[ProtoContract(ImplicitFields = ImplicitFields.AllPublic)]
public class SelectWorksheetRange : IReturn<ExcelData>
{
}
我甚至没有看到错误,因为测试只是在ex.Get完成而没有任何信息。如何调试?
答案 0 :(得分:1)
我不能评论ServiceStack,但就protobuf-net而言,是的:&#34; int[]
好,object[]
坏&#34;。原因是protobuf有线格式(由Google设计)非常简洁,并且包含精确零元数据:它希望任何对话的两端都知道完全他们在任何时候交换的内容。使用int[]
,这是可能的,而使用object[]
则根本不是。{1}}。有一些令人讨厌的黑客攻击方式,但它们往往是有问题的(维护方面)和低效率。