1

我正在序列化一条消息,其中包含字符串中的一些不可见字符。它工作得很好,但我不知道是否有可能在字符串字段的默认值中有一个不可见的字符。

像这样的东西:

Message test1 {
    optional string testField = 1 [default = "<STX>"];
}

有什么解决办法吗?

4

1 回答 1

0

这在一定程度上取决于您是使用 .proto 模式还是代码优先。在后一种情况下 - 当然:告诉它你想要什么:

[ProtoContract]
class Test1 {
    private const string STX = "\u0002";

    [ProtoMember(1), DefaultValue(STX)]
    public string TestField1 { get; set; }

    public Test1() {
        TestField1 = STX;
    }
}

其中"\u0002"是 STX 令牌的 C# 文字,即值为 2 的代码点。

如果您使用的是 .proto;那么说真的,我不知道。.proto的语言指南没有提到任何关于字符串转义规则的内容。我可以调查(但不是“现在”),但这里没有特别的答案是“显而易见的”。如果您碰巧已经知道其他基于 .proto 的生成器的答案,那么我全都听好了。

于 2013-05-29T10:57:45.773 回答