Почему не
DELETE FROM table ORDER BY id DESC LIMIT 1, 123456789
Просто удаляют все кроме первой строки (порядок является DESC!), с помощью очень очень большого количества в качестве второго ПРЕДЕЛЬНОГО аргумента. Посмотрите здесь
Вы можно просто установить его как свойство 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
.
Base64 преобразует двоичные данные в строку. Если вы хотите кодировать данные в строке base64, вам нужно сначала закодировать их в массив байтов, например, используя Encoding.UTF.GetBytes (myString)
.
Возникает вопрос, почему именно вы хотели бы сделать это в первую очередь. Если вам нужно использовать базу 64, вы уверены, что у вас действительно есть текстовые данные для начала?
Вы сохраняете строку как значение Base64, а затем имеете свойство, которое декодирует его в предложении get.
Единственный поддерживаемый способ изменить вывод класса XmlSerializer
(без уродливых хаков, таких как наличие специальных скрытых свойств и т. Д.) - это реализовать IXmlSerializable
Вы можете избавить себя от написания кода сериализации для всего класса, определив класс Base64String
, который реализует IXmlSerializable
и просто записывает закодированную строку. Определите оператор, чтобы сделать его неявно приводимым к строке, и он должен работать почти так же, как и обычная строка.