¿Cómo podría un objeto obtener una referencia a una clase que está en un ensamblaje diferente (y sin referencia)?
-
06-07-2019 - |
Pregunta
Tengo dos proyectos: A / B. El proyecto A es el proyecto que contiene todas las formas ganadoras que están vinculadas a objetos en B (elementos lógicos)
A tiene un objeto de tipo A.Form
B tiene objetos de tipo B. serializador B.Logic
Ahora, A tiene una referencia a B (pero B no tiene una referencia a A) y A.Form contiene una variable miembro de tipo B.Logic. En algún momento, cuando todos los datos se almacenan en B.Logic, intento guardar este objeto en el disco llamando a B.Serializer (B.Logic).
En este punto, aparece un error al serializar diciendo que A.From no está marcado como serializable.
Pero el proyecto B NO tiene ninguna referencia a A en absoluto e incluso si ALGUNA VEZ tiene un miembro que haga referencia a A.Form, ni siquiera debería compilar.
Solución
El culpable habitual aquí es cosas como eventos (en B.Logic
) u otras referencias a objetos externos. Puede marcar campos como no para la serialización:
[NonSerialized]
private SomeType foo;
o con eventos de campo:
[field: NonSerialized]
public event EventHandler Bar;
Como comentario aparte, a partir de la descripción, supongo que está utilizando BinaryFormatter
; personalmente, tengo reservas sobre esto: es muy frágil . Sugeriría algo no específico de implementación; XmlSerializer
, protobuf-net , Json.NET , etc.