Come può un oggetto ottenere un riferimento a una classe che si trova in un assembly diverso (e senza riferimenti)?
-
06-07-2019 - |
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.
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.