Ich mache eine Serialisierung von db linq-Objekten, die EntitySet- und EntityRef-Klassen enthalten..NET, C#: So fügen Sie ein benutzerdefiniertes Serialisierungsattribut hinzu, das als ISerializable-Schnittstelle fungiert
Ich habe einen ziemlich einfachen Weg gefunden, mit der Serialisierung dieser Klassen umzugehen, indem ich einfach ISerializable benutzt, um Member dieses Typs korrekt zu bearbeiten (sie in Serialisierungslisten umzuwandeln und bei der Deserialisierung rückgängig zu machen).
Allerdings wäre es wirklich schön, wenn ich tun kann:
[Serializable]
[SerializeLinqEntities]
partial class Person
{ ... }
Statt:
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);
}
}
Gibt es eine Möglichkeit, dies zu tun? Ich habe die Serialisierungsklassen durchgesehen und konnte keine Möglichkeit finden, benutzerdefinierte Serialisierungsfilterroutinen einzurichten (in denen ich nach meinen benutzerdefinierten Attributen suchen konnte).
Danke!
Sieht aus wie IClientFormatterSinkProvider und IServerFormatterSinkProvider wird mir erlauben, einen BinaryFormatter mit Satz meine Gewohnheit SurrogateSelector zu liefern. Danke nochmal Sergey! – marq
Hmm ... also, wie sich herausstellt, hat Microsoft das viel schwieriger gemacht, als es aussieht. Siehe den folgenden Link: http://www.123aspx.com/Rotor/RotorSrc.aspx?rot=40027 Sink-Provider, wie sich herausstellt, sind ziemlich komplex, und es ist nicht so einfach, nur eine zu implementieren. Ich wünschte wirklich, sie hätten bessere Interface-APIs zur Verfügung gestellt, um mit der binären Serialisierung zu interagieren ... – marq