【发布时间】:2013-11-15 16:40:14
【问题描述】:
我是堆栈溢出的新手,如果已经提出这个问题,我深表歉意;我到处找,我什么也找不到。最相关的主题是这个
Is there an extensibility mechanism in protobuf-net to control raw de/serialization?
问题是,我正在使用 protobuf-net 序列化方法,我想在序列化/反序列化过程中以不同的方式处理一些对象(出于多种原因的特殊对象)。
例如,假设我有一个名为 Connection 的类,它连接到数据库。
[ProtoContract]
public class Connection
{
[ProtoMember(1)]
public SqlConnection myConnection {get; set}
public Connection(String connectionString)
{
this.myConnection = new SqlConnection(connectionString);
}
}
当我尝试正常进行时,我想使用 protobuf-net 序列化这个类:
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)的相应信息。但这不是我要找的。
这只是一个例子,我可以有更复杂的对象,我想以不同的方式处理。
因此,我的问题是:有没有办法可以实现这一目标?我阅读了有关扩展的信息,但我不太了解它们。
提前致谢。
【问题讨论】:
标签: protobuf-net