Я новичок в переполнении стека, прошу прощения, если этот вопрос уже предложен; Я везде искал, и ничего не мог найти. Наиболее родственный предмет был этотРасширения Protobuf-net? Могу ли я сериализовать специальные объекты по-другому?
Is there an extensibility mechanism in protobuf-net to control raw de/serialization?
Дело в том, я использую Protobuf внутрисетевые метод сериализации и я хотел бы, чтобы рассматривать некоторые объекты (специальные объекты по нескольким причинам), по-другому в сериализации/процесс десериализации.
Например, у меня есть что-то вроде класса Connection, который подключается к базе данных.
[ProtoContract]
public class Connection
{
[ProtoMember(1)]
public SqlConnection myConnection {get; set}
public Connection(String connectionString)
{
this.myConnection = new SqlConnection(connectionString);
}
}
И я хотел бы сериализации этого класса, используя Protobuf-сеть, когда я пытаюсь сделать это нормально:
public void Serialize(Object instance, string path)
{
using (var stream = new FileStream(path, FileMode.Create))
{
Serializer.Serialize(stream, instance);
}
}
public void someMethod()
{
Connection p = new Connection("user id=username;" +
"password=password;server=serverurl;" +
"Trusted_Connection=yes;" +
"database=database; " +
"connection timeout=30");
Serialize(p);
}
я получаю исключение (это не совсем проблема) ... Скажем, я хотел бы рассматривать этот объект (SqlConnection) другим. Скажем, я хотел бы сериализовать его connectionString, а не сам объект, поэтому, когда я десериализую его, я могу снова подключиться к соответствующей базе данных ...
Я знаю, что могу сделать что-то вроде другого класса (тот, который он на самом деле будет сериализован), который содержит соответствующую информацию об особом объекте (в данном случае connectionString). Но это не то, что я ищу.
Это просто пример, у меня могут быть более сложные объекты, которые я хотел бы обрабатывать по-другому.
Поэтому мой вопрос: есть ли способ, которым я мог бы это достичь? Я читал о расширении, но я не совсем понимаю их.
Заранее спасибо.
Большое спасибо, я запустил пример, и все работает отлично. Я думаю, что это будет достаточно хорошо для проекта, над которым я работаю. – user2996657