Come può un oggetto ottenere un riferimento a una classe che si trova in un assembly diverso (e senza riferimenti)?

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

Domanda

Ho due progetti: A / B. Il progetto A è il progetto che contiene tutte le forme di win vincolate a oggetti in B (elementi logici)

A ha un oggetto di tipo A.Form

B ha oggetti di tipo B.Serializer B.Logic

Ora, A ha un riferimento a B (ma B non ha un riferimento ad A) e A.Form contiene una variabile membro di tipo B.Logic. Ad un certo punto, quando tutti i dati sono archiviati in B.Logic, provo a salvare questo oggetto sul disco chiamando B.Serializer (B.Logic).

A questo punto viene visualizzato un errore durante la serializzazione che dice che A.From non è contrassegnato come serializzabile.

Ma il progetto B NON ha alcun riferimento ad A in TUTTO e anche se QUALCOSA avesse un membro che fa riferimento a A.Form, non dovrebbe nemmeno compilare.

È stato utile?

Soluzione

Il solito colpevole qui sono cose come eventi (in B.Logic ) o altri riferimenti a oggetti esterni. È possibile contrassegnare i campi come non per la serializzazione:

    [NonSerialized]
    private SomeType foo;

o con eventi simili a campi:

    [field: NonSerialized]
    public event EventHandler Bar;

A parte - dalla descrizione, suppongo che tu stia usando BinaryFormatter ; personalmente, ho delle riserve al riguardo - è molto fragile . Suggerirei qualcosa di non specifico per l'implementazione; XmlSerializer , protobuf-net , Json.NET , ecc.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top