먼저 문제의 간단한 테스트 사례와 트리거 방법을 보여줍니다. 다음은 클래스입니다 :Protobuf.NET - 트리거링 참조가 목록에있는 경우 "재귀 감지"문제 발생
프로그래밍 방식으로 처리되는 protobuf 주석이 없습니다. Back과 Children과 함께 클래스가 .AsReferenceDefault = true 인 스키마에 모두 추가되도록 수동으로 보장했습니다.
재귀 트리거링은 인스턴스가 적어도 8 개의 이상한 깊이로 채워질 때 발생합니다. 7 괜찮아요.
ProtoRecurseTest recurseTest = new ProtoRecurseTest();
ProtoRecurseTest recurseItem = recurseTest;
for (int i = 0; i < 8; i++)
recurseItem = recurseItem.Add();
그리고 recurseTest를 직렬화 : 인구 코드는 정직이다. 이 동작은 자식이 목록에 있지만 목록에있는 경우 자식 채우기 코드로 끝날 때마다 목록 당 단 하나의 자식으로도 발생합니다. 내가 하나의 참조로 아이들을 대체했을 때 모든 것이 잘 연재되었다.
이것은 ProtoBuf.NET 2.1.0.0을 사용하고 있습니다.