¿Cómo podría un objeto obtener una referencia a una clase que está en un ensamblaje diferente (y sin referencia)?

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

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.

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top