XmlSerializer, base64 кодируют Строкового участника

Почему не

DELETE FROM table ORDER BY id DESC LIMIT 1, 123456789

Просто удаляют все кроме первой строки (порядок является DESC!), с помощью очень очень большого количества в качестве второго ПРЕДЕЛЬНОГО аргумента. Посмотрите здесь

5
задан Anonym 10 September 2009 в 12:39
поделиться

4 ответа

Вы можно просто установить его как свойство byte [] , и оно будет кодироваться в Base64 автоматически:

public class Test {
  public byte[] MyProperty {get;set;}

  public void SetMyProperty(string text)
  {
      MyProperty = System.Text.Encoding.Unicode.GetBytes(text);
  }
}

Test test = new Test();
test. SetMyProperty("123456789123456789");

Вывод:

<MyProperty>MQAyADMANAA1ADYANwA4ADkAMQAyADMANAA1ADYANwA4ADkA</MyProperty>

(Попробуйте декодировать это здесь )

К сожалению, там нет способа (насколько мне известно) сделать MyProperty закрытым и по-прежнему сериализоваться в System.Xml.Serialization .

3
ответ дан 18 December 2019 в 14:48
поделиться

Base64 преобразует двоичные данные в строку. Если вы хотите кодировать данные в строке base64, вам нужно сначала закодировать их в массив байтов, например, используя Encoding.UTF.GetBytes (myString) .

Возникает вопрос, почему именно вы хотели бы сделать это в первую очередь. Если вам нужно использовать базу 64, вы уверены, что у вас действительно есть текстовые данные для начала?

4
ответ дан 18 December 2019 в 14:48
поделиться

Вы сохраняете строку как значение Base64, а затем имеете свойство, которое декодирует его в предложении get.

2
ответ дан 18 December 2019 в 14:48
поделиться

Единственный поддерживаемый способ изменить вывод класса XmlSerializer (без уродливых хаков, таких как наличие специальных скрытых свойств и т. Д.) - это реализовать IXmlSerializable

Вы можете избавить себя от написания кода сериализации для всего класса, определив класс Base64String , который реализует IXmlSerializable и просто записывает закодированную строку. Определите оператор, чтобы сделать его неявно приводимым к строке, и он должен работать почти так же, как и обычная строка.

0
ответ дан 18 December 2019 в 14:48
поделиться
Другие вопросы по тегам:

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