Ошибка при использовании ProtoBuf-сети с перечислением флагов

Это имеет на вид плохую запись безопасности: http://secunia.com/advisories/search/?search=Drupal

5
задан Stécy 29 September 2009 в 21:03
поделиться

1 ответ

Вы можете сделать его самостоятельно за 20 секунд. Например, в C #
- Создайте новое приложение WinForms
- Создайте новый SqlConnection (connectionString)
- Исключение => Неверная строка подключения
теперь это исправлено в r274 ; вы должны использовать:

[ProtoMember(12, DataFormat = DataFormat.TwosComplement)]
public MyEnum MyValue {get;set;}

В конечном итоге буферы протокола подключаются формат не предоставляет возможности для перечислений [Flags] - он применяет значения перечисления к сдержанный набор. Я мог бы легко допустить это, но:

  • В этом случае мне, вероятно, придется отключить сопоставления перечислений или сделать много уродливых битов. сопоставление работы
  • это не будет строго совместимым

Более простой способ сделать это может заключаться в использовании прокладки в вашем коде:

public MyEnum MyValue {get;set;}
[ProtoMember(12)]
private int MyValueWire {
    get {return (int)MyValue;}
    set {MyValue = (MyEnum)value;}
}

Другой альтернативой было бы добавить флаг, который работает, как указано выше, на вашем от имени; обрабатывая его как int, а не как перечисление.

4
ответ дан 15 December 2019 в 01:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: