Wie könnte ein Objekt einen Verweis auf eine Klasse erhalten, die in einer anderen (und nicht referenzierte) Montag ist?

StackOverflow https://stackoverflow.com/questions/831835

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.

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top