객체가 어떻게 다른 (그리고 참조되지 않은) 어셈블리에있는 클래스에 대한 참조를 어떻게 참조 할 수 있습니까?

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

문제

두 가지 프로젝트가 있습니다 : A/B. Project A는 B (Logic Items)의 objbect에 바인딩되는 모든 winforms를 포함하는 프로젝트입니다.

A는 A.Form의 객체가 있습니다

B에는 B.Logic 형의 대상이 있습니다

이제 A는 B에 대한 참조를 가지고 있지만 (B에 대한 참조는 없음) A. 양식에는 유형 B의 멤버 변수가 포함되어 있습니다. 어느 시점에서 모든 데이터가 B.logic에 저장되면 B.serializer (b.logic)를 호출 하여이 객체를 디스크에 저장하려고합니다.

이 시점에서 A.FROM이 직렬화 가능하지 않다고 말하면 직렬화 할 때 오류가 발생합니다.

그러나 프로젝트 B는 A를 전혀 언급하지 않으며 A.Form을 참조하는 회원이 있더라도 컴파일조차해서는 안됩니다.

도움이 되었습니까?

해결책

여기의 일반적인 범인은 이벤트와 같은 것들입니다. B.Logic) 또는 외부 객체에 대한 기타 역 참조. 직렬화를 위해 필드를 표시 할 수 있습니다.

    [NonSerialized]
    private SomeType foo;

또는 필드와 같은 이벤트 :

    [field: NonSerialized]
    public event EventHandler Bar;

옆으로 - 설명에서, 나는 당신이 BinaryFormatter; 개인적으로, 나는 이것에 대해 예약합니다 - 그것은 매우 취성. 나는 비 구현에 관한 것을 제안합니다. XmlSerializer, protobuf-net, json.net, 등.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top