【发布时间】:2010-02-01 04:01:44
【问题描述】:
我正在对包含 EntitySet 和 EntityRef 类的 db linq 对象进行一些序列化。
我找到了一种处理这些类序列化的非常简单的方法,只需使用 ISerializable 来正确处理这种类型的成员(将它们转换为列表以进行序列化,并在反序列化时撤消它)。
但是,如果我能做到,那就太好了:
[Serializable]
[SerializeLinqEntities]
partial class Person
{ ... }
代替:
partial class Person : ISerializable
{
public virtual void GetObjectData( SerializationInfo si, StreamingContext ctxt )
{
EntitySerializer.Serialize(this, typeof(Person), si, ctxt);
}
protected Person( SerializationInfo si, StreamingContext ctxt )
{
EntitySerializer.Deerialize(this, typeof(Person), si, ctxt);
}
}
有没有办法做到这一点?我查看了序列化类,似乎找不到任何方法来设置自定义序列化过滤器例程(我可以在其中查找我的自定义属性)。
谢谢!
【问题讨论】:
-
看起来 IClientFormatterSinkProvider 和 IServerFormatterSinkProvider 将允许我为我的自定义 SurrogateSelector 集提供 BinaryFormatter。再次感谢谢尔盖!
-
嗯...所以,事实证明,微软让这件事变得比看起来要困难得多。请参阅以下链接:123aspx.com/Rotor/RotorSrc.aspx?rot=40027 Sink 提供程序,事实证明,是相当复杂的,它并不像实现一个那么简单。我真的希望他们提供更好的接口 API 来与二进制序列化接口......
标签: c# .net serialization custom-attributes