2013-05-29 4 views
1

Я сериализую сообщение, содержащее некоторые невидимые символы в строке. Он работает отлично, но я не знаю, возможно ли иметь невидимый символ в значении по умолчанию для поля строки.Невидимый символ в строковом значении по умолчанию

Нечто подобное:

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

Есть ли решение, чтобы сделать это?

+0

Вы можете быть очень понятны, что вы подразумеваете под «невидимым персонажем» здесь? Я скопировал/вставлял этот текст, чтобы увидеть, есть ли здесь какой-нибудь юникод - он * выглядит * как ровно 5 символов. Итак: что такое «невидимое» здесь? –

+0

Под «невидимым персонажем» я имею в виду Юникод. Вы можете заменить «» на реальное значение: «». – William

ответ

0

Это зависит от того, используете ли вы .proto-схемы или кодовые. В последнем случае - уверен: просто сказать ему, что вы хотите:

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

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

    public Test1() { 
     TestField1 = STX; 
    } 
} 

"\u0002" где является C# буквальной для маркеров STX, код точка со значением 2.

Если вы используете .proto ; то по всей серьезности Я не знаю. language guide для .proto ничего не говорит о правилах экранирования строк. Я мог бы расследовать (но не «прямо сейчас»), но никакого конкретного ответа здесь «очевидно». Если вы уже знаете ответ на этот вопрос для других генераторов .proto, тогда я все уши.

+0

Спасибо за ответ, я использую схемы .proto. Я просто пробовал этот вид .Proto с Нанопбом. Символ Unicode преобразуется в значение «\ x02» в файле .pb.c. – William

+0

@William, так это на самом деле STX в .pb.c? hmmm ... Мне, возможно, придется настроить протоген для поддержки этих –

Смежные вопросы