Wie könnte ein Objekt einen Verweis auf eine Klasse erhalten, die in einer anderen (und nicht referenzierte) Montag ist?
-
06-07-2019 - |
Frage
Ich habe zwei Projekte: A / B. Projekt A ist das Projekt, das alle des WinForms enthält, die objbects in B gebunden sind (logische Elemente)
A hat ein Objekt vom Typ A.Form
B hat Objekte vom Typ B.Serializer B.Logic
Nun hat A einen Verweis auf B (aber B nicht über einen Verweis auf A) und A.Form enthält eine Membervariable vom Typ B.Logic. An einem gewissen Punkt, wenn alle Daten in B.Logic gespeichert versuche ich, dieses Objekt auf der Festplatte zu speichern, indem B.Serializer (B.Logic) aufgerufen wird.
An diesem Punkt erhalte ich einen Fehler, wenn die Serialisierung sagen, dass A.From nicht als serialisierbar gekennzeichnet ist.
Aber das Projekt B hat keinen Bezug auf A bei ALL und auch wenn es hat irgendwie ein Mitglied Referenzierung A.Form, sollte es nicht einmal kompilieren.
Lösung
Die üblichen Täter hier Dinge wie Ereignisse (in B.Logic
) oder anderen Rückverweisen auf externe Objekte. Sie können Felder nicht für die Serialisierung markieren:
[NonSerialized]
private SomeType foo;
oder mit feldartigen Ereignissen:
[field: NonSerialized]
public event EventHandler Bar;
Als Neben - aus der Beschreibung, gehe ich davon aus, dass Sie BinaryFormatter
verwenden; persönlich, ich habe Vorbehalte gegen diese - es ist sehr spröde . Ich würde etwas Nicht-Umsetzung spezifische vorschlagen; XmlSerializer
, protobuf-net , Json.NET , etc.