ServiceStack Dto不能有object []但是int []可以吗?

时间:2014-03-16 01:26:10

标签: protobuf-net servicestack-bsd

使用:

[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完成而没有任何信息。如何调试?

1 个答案:

答案 0 :(得分:1)

我不能评论ServiceStack,但就protobuf-net而言,是的:&#34; int[]好,object[]坏&#34;。原因是protobuf有线格式(由Google设计)非常简洁,并且包含精确零元数据:它希望任何对话的两端都知道完全他们在任何时候交换的内容。使用int[],这是可能的,而使用object[]则根本不是。{1}}。有一些令人讨厌的黑客攻击方式,但它们往往是有问题的(维护方面)和低效率。