Comment un objet peut-il obtenir une référence à une classe qui se trouve dans un assemblage différent (et non référencé)?

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

Question

J'ai deux projets: A / B. Le projet A est le projet qui contient tous les winforms liés aux objets dans B (éléments logiques)

A a un objet de type A.Form

B a des objets de type B.Sérialiseur B.Logic

Maintenant, A a une référence à B (mais B n'a pas de référence à A) et A.Form contient une variable membre de type B.Logic. À un moment donné, lorsque toutes les données sont stockées dans B.Logic, j’essaie de sauvegarder cet objet sur le disque en appelant B.Serializer (B.Logic).

À ce stade, une erreur s'est produite lors de la sérialisation indiquant que A.From n'est pas marqué comme sérialisable.

Mais le projet B n'a AUCUNE référence à A du tout et même s'il a eu un membre référant à A.Form, il ne devrait même pas compiler.

Était-ce utile?

La solution

Les coupables habituels sont des événements tels que des événements (dans B.Logic ) ou d'autres références en arrière à des objets externes. Vous pouvez marquer les champs comme non pour la sérialisation:

    [NonSerialized]
    private SomeType foo;

ou avec des événements de type champ:

    [field: NonSerialized]
    public event EventHandler Bar;

En dehors de la description, je suppose que vous utilisez BinaryFormatter ; Personnellement, j'ai des réserves à ce sujet. Il s'agit de très fragile . . Je suggérerais quelque chose de non spécifique à la mise en œuvre; XmlSerializer , protobuf-net , Json.NET , etc.,

.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top